Log4 使用十六进制代码记录 HTTP 响应

use*_*165 6 java logging log4j httpclient apache-httpclient-4.x

HTTP 客户端请求以常规 ASCII 记录,但响应以十六进制代码记录。我像另一个不存在此问题的应用程序一样设置了 log4j 文件。

httpclient.wire.content >> </soap:Envelope>
...
httpclient.wire.content << "[0x1f][0x8b][0x8][0x0][0x0][0x0][0x0][0x0][0x0][0x0]}[0x93][0xc1]N[0xc3]0[0xc][0x86][0xef]<E[0xe9][0xbd]M[0xcb][0xc4][0xa5]*E m[0x82][0x3]Lb[0xbc]@XM[0x89][0xd4]&!N[0xd3][0x8d][0xa7]G[0xed][0x9a]-[0xe9][0xd6][0xdd][0xe2][0xdf][0x9f][0xed]8vr[0x14]TfKn[0xa0][0x16][0x12][0x82]]Ss[0xcc]z[0xed]![0xfc][0xd1]Zf[0x84]t][0x17]w[0x8b]X[0xa8][0x8a][0xdc]%[0xc9][0x82]$[0xf7][0xa4][0xf7]G0[0xc6][0x84]c[0x90]I[0x8f]![0x86][0x81][0xc2][0xd8][0xd0][0xb8][0x12][0x86][0xc0]7"1iX[0xdc][0x4]A[0x90][0xf][0xe5]^[0x80][0x96][0xa0][0x88][0xa3]<[0x8b]r?[0x98][0xbd]b[0xd2][0xc][0xdb][0xaf][0x86][0xe9][0x95]P[0xcd][0x7][0xa0][0x14][0x1c][0xe1][\r][0x10]i[0x5][0x16][0x1a]9[0xa1]X[0xc5]8[0xd5]L[0xf0][0xd7][0xb2]x[0xcc][0xc9][0x99][0xe6][0xf3]C^D[0x17][0xf7]$[0x9f][0xd6][0x8a]r[0x9c][0xf2][0x13][0xd1][0x8f]P[0xf0][0xdb][0x2][0xea]#|[0xb2]g[0xee][0xcd][0xab][0xb5][0xaa](g^?[0xc3]}[0xdf]i[0x3][0xd3]..[0x10]N[0xae][0xdb
Run Code Online (Sandbox Code Playgroud)

Rob*_*ree 0

接受编码:gzip、deflate

您的请求标头中的上述内容会导致您描述的症状,原因如下:

服务器可以在响应发送到 WIRE 之前使用装饰器对响应进行 GZIP 压缩

您的响应过程应该用拦截器来装饰GUNZip。

不知道这会让 WIRE 记录器处于什么状态。

我只需要将拦截器添加到“parse.com”上的一些请求中,就注意到了这一点。我还不知道记录器处于什么状态。您可能需要更多地关注这一点。但应该检查您的响应拦截器,因为它可能涉及相同的事情。

我的回复(那些在 WIRE 记录器中显示为 HEX 的 gzip 回复)当它们出现在 parse.com 的 Android 应用程序中时就被挂起。只需使用响应实体上的包装器进行修复,如代码链接中所示。