Possiedo un'app di Java mostruosa (un client del noto server di applicazioni GNUEnterprise) e la sua origine, che posso compilare dopo aver apportato alcune modifiche. L'app utilizza la rete pesantemente e ho bisogno di monitorare ogni richiesta e risposta. Potrei usare uno sniffer come Wireshark, ma l'applicazione funziona con il suo server su SSL, quindi non conoscendo la chiave privata del certificato SSL qualsiasi traffico sniffato è abbastanza inutile.Registra tutte le interazioni di rete dell'applicazione Java
Cosa posso fare per rendere ogni richiesta e risposta da registrare dall'applicazione stessa? Devo vedere tutte le intestazioni inviate e ricevute. Non voglio modificare tutto il codice responsabile per l'interazione di rete. Quello che voglio è quello di mettere un codice come
Network.setDefaultLogger(myCustomLoggerInstance);
da qualche parte vicino all'inizio del app e poi nel myCustomLoggerInstance
fare tutto la registrazione ho bisogno.
Inoltre, dato che tutte le operazioni di rete sono fatte con URLConnection
s, posso ottenere le intestazioni di risposta con con.getHeaderFields()
e richiedere le intestazioni con con.getRequestProperties()
. Ma perché i cookie non ci sono? Come scaricare i cookie inviati e ricevuti nello stesso modo?
EDIT: Quello che sto cercando di raggiungere è quello di imitare la comunicazione di RPC-applicazione con i suoi server tramite SSL, ad esempio, utilizzando curl
. Per questo ho bisogno di ottenere il registro dettagliato del traffico di rete dell'app.
vorrei modificare 'OpenJDK', implementare la funzionalità logger citato poi annusare la comunicazione presso la biblioteca livello. – auselen
@auselen troppo hacky. Se non c'è modo di farlo a livello di applicazione (e sembra così), farò meglio ad attaccare a un server proxy di logging esterno, come suggerito da greyfairer. – Hnatt