java - Android 与 PC 上的 Java : Different HttpResponse?

标签 java android http response httpresponse

我在我的 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/

相关文章:

java - Gradle 相当于 Surefire classpathDependencyExclude

Java,添加变量时 while 循环崩溃 --> 白色,无响应的 JFrame

java - 如何在Android模拟器上向WAMP服务器发出HTTP请求

http post 请求不在 Blackberry 5.0 中发送参数

angularjs - Angular js : Set HTTP status code for cancelled requests

c# - 旋转表迭代

android - 在 SpriteKit 上停用物理

android - ContactsContract.Contacts 默认是空的吗?

java - 获取单击按钮的文本?

javascript - 在 javascript 中处理多个响应