Http交互打印而不消耗



我正在调试一个Java应用程序,该应用程序使用org.apache.http.*neneneba API,例如:

HttpResponse response = m_httpClient.execute(head,new BasicHttpContext());

这只是一个例子,我的项目有很多类似的行,我想插入应该打印内容和标题的打印日志,例如:

Log.i(TAG, "---> Request <-----");
        String str = "";
        for (Header header : post.getAllHeaders())
        {
           str += header.getName() + " : " + header.getValue() + "n";
        }
        Log.i(TAG, str);
        Log.i(TAG, "---> Response <-----");
        HttpResponse response = client.execute(post);
        Log.i(TAG, EntityUtils.toString(response.getEntity()));
        response = client.execute(post);

作为避免"IllegalStateException:内容已被消耗"的变通方法,我执行了两次请求,但我确实这样做了而不是,有解决方案吗为了避免这种情况?

您使用哪个http客户端?

每个httpclient风格都应该有一个可在谷歌上搜索的技术,用于"打开Wire和Header日志"。。。。

例如,如果您使用的是org.apache客户端,下面是您打开所需日志的方法。。

使用wire&头日志打开,logcat包括您在这里看到的

经过如此快速的研究,这似乎是一个非常普遍的例外。

是否可以只要求一次响应字符串?将其存储在方法变量中,记录响应字符串,然后只返回响应字符串(而不是整个HttpResponse对象)?

或者,调用链上的代码是否真的在HttpResponse的其他方法上工作,然后只是响应的内容?

我还有一个想法,但写起来并不是很有趣,那就是你可以自己实现所有不同的HttpResponse接口,并编写行为来"缓存"原始HttpResponse对象的所有可能行为。基本上,用您自己的对象包装原始的HttpResponse。看起来工作量很大,但希望它能对你所做的事情起作用。

最新更新