我在我的 PC(Windows 7 64 位、Eclipse、Java)和 Android 虚拟机上运行相同的代码,但我得到了不同的结果。
它是一个小程序,可以将 HttpResponse 完全打印为字符串。
PC 上的结果:
HTTP/1.1 405 Method Not Allowed [Allow: GET, HEAD, Date: Thu, 03 Nov 2011 17:57:22 GMT, Content-Type: text/html; charset=UTF-8, Server: gws, Content-Length: 11816, X-XSS-Protection: 1; mode=block, X-Frame-Options: SAMEORIGIN]
Android 上的结果:
org.apache.http.message.BasicHttpResponse@44ec9da8
我在 PC 上运行的代码是:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(
"http://www.google.com");
try {
HttpResponse response = httpclient.execute(httppost);
System.out.println(response.toString());
在 Android 上:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(
"http://www.google.com");
try {
HttpResponse response = httpclient.execute(httppost);
return response.toString();
我问是因为我写了一个可以在 PC 上运行的应用程序 - 使用 HttpResponse 内容 - 但在 android 上似乎根本没有内容...
有人能给我解释一下吗?或者告诉我如何在 Android 上将响应内容( header )作为字符串获取?
最佳答案
您实际上并没有运行相同的代码。
Android's BasicHttpResponse
目前根本没有 toString()
方法,继续调用 java.lang.Object.toString()
给你 fully.qualified.class.name@哈希码
.
您的桌面版 HttpClient 很可能有一个类似于这个的 toString() from HttpClient 4.1.3 :
public String toString() {
return this.statusline + " " + this.headergroup;
}
将 toString()
用于任何非调试/日志目的都不是好的做法——您应该使用实际的 get 方法提取正确的信息,或者只返回 HttpResponse
本身。
关于java - Android 与 PC 上的 Java : Different HttpResponse?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7999793/