Registrar todas as interações de rede do aplicativo Java
Eu tenho um aplicativo Java monstruoso (um cliente do servidor de aplicativos pouco conhecido GNUEnterprise) e sua origem, que eu posso compilar de volta depois de fazer algumas alterações nele. O aplicativo usa muito a rede e eu preciso monitorar cada solicitação e resposta. Eu poderia usar um sniffer como o Wireshark, mas o aplicativo funciona com seu servidor por SSL, portanto, não conhecer a chave privada do certificado SSL em nenhum tráfego sniffed é muito inútil.
O que posso fazer para que todos os pedidos e respostas sejam registrados a partir do próprio aplicativo? Preciso ver todos os cabeçalhos enviados e recebidos. Eu não quero alterar todo o código responsável pela interação na rede. O que eu quero é colocar um código como
Network.setDefaultLogger(myCustomLoggerInstance);
em algum lugar perto do início do aplicativo e, em seguida, nomyCustomLoggerInstance
faça todo o registro que preciso.
Além disso, todas as operações de rede são feitas comURLConnection
s, posso obter cabeçalhos de resposta comcon.getHeaderFields()
e solicitar cabeçalhos comcon.getRequestProperties()
. Mas por que os biscoitos não estão lá? Como despejar os cookies enviados e recebidos da mesma maneira?
EDITAR: O que eu estou tentando alcançar é para imitar a comunicação do aplicativo RPC com seu servidor através de SSL, digamos, usandocurl
. Para isso, preciso obter um log detalhado do tráfego de rede do aplicativo.