Android httpclient返回胡言乱语

Android httpclient返回胡言乱语,android,httpclient,Android,Httpclient,我试图使用HTTPClient获取页面,但它似乎返回了乱码(我认为是二进制的) 这是我的密码: public Boolean getPage(String url, String referer) { httpClient.getParams().setParameter("http.protocol.version", HttpVersion.HTTP_1_1); httpClient.getParams().setParameter("http.socket.timeout"

我试图使用HTTPClient获取页面,但它似乎返回了乱码(我认为是二进制的)

这是我的密码:

public Boolean getPage(String url, String referer) {
    httpClient.getParams().setParameter("http.protocol.version", HttpVersion.HTTP_1_1);
    httpClient.getParams().setParameter("http.socket.timeout", new Integer(1000));
    httpClient.getParams().setParameter("http.protocol.content-charset", "UTF-8");

    HttpGet httpGet = new HttpGet(url);
    response = null;

    httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3");
    httpGet.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
    httpGet.setHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
    httpGet.setHeader("Accept-Encoding", "gzip,deflate");
    httpGet.setHeader("Referer", referer);

    int tryNumber = 0;

    while(tryNumber<5){
        tryNumber++;
        try {
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            ret = httpClient.execute(httpGet,responseHandler).toString();
            Log.v("Info:", ret);
        }
        catch(Exception e) {
            error = e;
            break;
        }
    }
}
public Boolean getPage(字符串url,字符串referer){
httpClient.getParams().setParameter(“http.protocol.version”,HttpVersion.http_1_1);
httpClient.getParams().setParameter(“http.socket.timeout”,新整数(1000));
httpClient.getParams().setParameter(“http.protocol.content字符集”,“UTF-8”);
HttpGet HttpGet=新的HttpGet(url);
响应=空;
setHeader(“用户代理”、“Mozilla/5.0(Windows;U;Windows NT 6.1;en-US;rv:1.9.1.3)Gecko/20090824 Firefox/3.5.3”);
setHeader(“接受”,“text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”);
setHeader(“接受字符集”,“ISO-8859-1,utf-8;q=0.7,*;q=0.7”);
setHeader(“接受编码”、“gzip、deflate”);
setHeader(“Referer”,Referer);
int-tryNumber=0;

虽然(tryNumber只是一个猜测,但可能是响应被压缩了吗?也许您应该删除下面的行,这样您的响应将是纯文本的

httpGet.setHeader("Accept-Encoding", "gzip,deflate");

只是一个猜测,但是可能是响应被压缩了吗?也许您应该删除下面的行,这样您的响应将是纯文本的

httpGet.setHeader("Accept-Encoding", "gzip,deflate");

没什么关系,但看看你发布的图片,我不得不说-用大写字母(ChapterList.java而不是ChapterList.java)开始类名这不是我真正的代码,我通常在Java中这样做,但这只是另一个项目的svn签出,它已经死了,我正在尝试改进它并基本上修复它。尽管如此,我还是一个初学者。为什么你在接受字符集中有ISO-8859-1,而你似乎更喜欢UTF-8。如果你接受En编码“gzip,deflate”,你不需要处理解压吗,如图所示:?不相关,但看看你发布的图片,我不得不说-用大写字母开始类名(ChapterList.java而不是ChapterList.java)这不是我真正的代码,我通常在Java中这样做,但这只是另一个项目的svn签出,它已经死了,我正在尝试改进它并基本上修复它。尽管如此,我还是一个初学者。为什么你在接受字符集中有ISO-8859-1,而你似乎更喜欢UTF-8。如果你接受En编码“gzip,deflate”,您不需要处理解压缩吗,如下所示:?我怎么没看到(谢谢!成功了!我会尽快接受答案。不客气。请注意David Dossot也对您的问题发表了评论。他在此处链接到另一个问题,向您展示如何解压缩您的回答。该链接还声称您实际上应该使用压缩通信。我怎么没看到这一点(谢谢!成功了!我会尽快接受答案。不客气。同时请注意David Dossot对您的问题的评论。他在此处链接了另一个问题,向您展示了如何解压缩您的回答。该链接还声称您实际上应该使用压缩通信。