Apache HttpClient中不可读的字符

时间:2011-08-14 02:58:15

标签: java http

我正在尝试登录网页,但在此之前,我正在使用HttpGet加载页面,这是返回的行, ÓA; 这就是我所能放的,不会让我粘贴任何其他角色。但他们都是这样,就像我在某种程度上得到错误的编码?这是我用来获取的代码

      HttpGet httpget = new HttpGet(url);
      if(headers == null) {
          headers = getDefaultHeaders();
      }
      for(String s : headers.keySet()) {
          httpget.addHeader(s, headers.get(s));
      }
        HttpResponse response = getClient().execute(httpget);
        HttpEntity entity = response.getEntity();
        System.out.println("Status Line: " + response.getStatusLine());
        if (entity != null) {
            InputStream input = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));
            String ln = "";
            while((ln = reader.readLine()) != null) {
                System.out.println("During Get - " + ln);
            }
        }

我做错了什么?

感谢您的帮助。

如果您需要更多信息,例如标题,请询问。

3 个答案:

答案 0 :(得分:2)

以下行可能是您遇到问题的原因:

  BufferedReader reader = new BufferedReader(new InputStreamReader(input));

您正在使用平台的默认字符集创建阅读器,并完全忽略可能在HTTP响应标头中指定的任何字符集。


如果在以正确的方式阅读内容时遇到同样的问题,则服务器可能因未正确设置响应标头而出错。

答案 1 :(得分:1)

实体是这样读的:

String content = org.apache.http.util.EntityUtils.toString( entity );
System.out.println(content);

这将为您全部阅读,以便您可以查看实际返回的内容。

答案 2 :(得分:0)

确保您没有使用简单的HTTP连接意外转到端口443。因为在这种情况下,您将返回SSL握手而不是HTTP响应。