0 0

HttpClient请求网址返回javascript乱码10

实现代码如下:

public static String getHtml() { 
        String response = ""; 
        HttpClient client = new HttpClient(); 
        HttpMethod method = new GetMethod("http://static1.mtime.cn/Utility/Data/TheaterListBoxData.m");
        try { 
                client.executeMethod(method); 
                if (method.getStatusCode() == HttpStatus.SC_OK) { 
                		System.out.println(method.getResponseBodyAsString());
//                        response = method.getResponseBodyAsString(); 
                } 
        } catch (URIException e) { 
                e.printStackTrace();
                return null;
        } catch (IOException e) { 
                e.printStackTrace();
                return null;
        } finally 
        { 
                method.releaseConnection(); 
        }
        
        return response; 

	}

 请求这个路径http://static1.mtime.cn/Utility/Data/TheaterListBoxData.m就有问题,因为返回的是text/javascript;

看到别人说说method.getResponseBodyAsStream()返回流,再设置流的字符编码,循环读取出来的也是乱码!

求解决方案!

 

2014年5月10日 03:19

4个答案 按时间排序 按投票排序

0 0

采纳的答案

因为response的流是gzip的,转一下就好了。

        InputStream is = new GZIPInputStream(method.getResponseBodyAsStream());

	System.out.println(IOUtils.toString(is));

2014年5月10日 13:02
0 0


Reader reader=new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(),"编码格式"));//指定编码格式

2014年5月13日 14:53
0 0

是字符编码的问题,如果你没有指定编码,那么如果你在windows下面运行的话,从byte[]变成String的时候,使用的是系统默认的编码,在WINDOWS下面,中文系统的编码默认是GBK,而你给的网址的JS采用的是UTF-8的编码,这个时候,当然就有乱码了。

最后推荐你使用最新的httpclient,你使用的是3.x的,最新的4.x在易用性方面以及架构方面都有很大的进步,你可以尝试一下。

2014年5月11日 23:19
0 0

提交请求前添加mehtod.setRequestHeader("Content-type", "text/javascript");

2014年5月10日 10:36

相关推荐

    页面get请求 中文参数方法乱码问题的快速解决方法

    针对GET请求中文参数乱码的问题,这里提供一种快速解决方法:使用JavaScript的`encodeURI()`函数进行两次编码。`encodeURI()`函数是JavaScript提供的用于编码URI的函数,它不会对已经编码的字符以及特殊字符如'&'、'...

    一个使用HttpClient调用天气预报接口的例程

    - `HttpResponse`对象:HttpClient执行请求后,会返回一个HttpResponse对象,其中包含了服务器的响应。 - `EntityUtils`类:这个Apache HttpClient的辅助类,用于从HttpEntity中读取内容,比如将响应体转化为字符...

    安卓网站交互JSONxmlWebserviceUPnP相关-使用HttpURLConnectionAsyncTask访问webservice接口返回json字符串.rar

    在这个项目中,开发者使用了HttpURLConnection和AsyncTask来实现Android应用与Web服务的交互,获取并解析返回的JSON字符串。下面我们将详细讨论这些知识点。 首先,JSON(JavaScript Object Notation)是一种轻量级...

    android 入门笔记

    需要在HttpClient或OkHttp等网络库中设置请求方法为POST,并将数据附在请求体中。 13. JSON格式接收返回数据 服务器返回的数据通常以JSON格式呈现,客户端需要解析JSON数据,可以使用Gson、Jackson或org.json等库...

    网站采集系统

    在请求网页内容时,可以使用HttpClient的GetAsync或PostAsync方法。 4. **代理设置** - **使用WebProxy**: 当需要通过代理服务器访问网页时,可以在HttpWebRequest对象上设置WebProxy属性,提供代理服务器的地址和...

    c#post multipart/form-data和JSON数据

    在C#中,我们可以使用HttpClient类来构造并发送这样的POST请求。首先,需要创建一个MultipartFormDataContent对象,然后添加键值对或文件流。例如: ```csharp using System.Net.Http; using System.IO; var ...

    如何验证Tomcat Gzip配置是否生效的方法

    这可以通过编写一段Java测试代码实现,该代码使用了Apache Commons HttpClient库来发送带有`Accept-Encoding: gzip, deflate`请求头的GET请求。服务器在接收到此请求头后,会判断是否支持Gzip压缩。如果支持并且启用...

    .net_Web数据挖掘.rar0527

    我们可以使用内置的HttpWebRequest或HttpClient类来发送HTTP请求获取网页内容。然后,使用HtmlAgilityPack或AngleSharp库解析HTML文档,提取所需数据。例如,通过XPath或CSS选择器定位到特定元素,抓取新闻标题、...

    tomcat设置gzip压缩的原理及配置方法

    一个简单的Java测试代码使用HttpClient发送带有"Accept-Encoding: gzip"头部的请求,并检查响应内容。如果响应内容是压缩后的乱码,并且内容长度显著小于未压缩时的长度,那么说明GZIP压缩功能已经成功启用了。 ...

    java毕设之基于网络爬虫技术的网络新闻分析

    在Java中,常用的网络爬虫框架有Jsoup和Apache HttpClient。该项目可能使用了Jsoup库来解析HTML,提取新闻标题、内容和链接。 2. **HTML解析**:Jsoup库提供了强大的HTML解析能力,可以方便地抽取和操作DOM树中的...

    android开发资料

    - **8.5.3 WebView与javascript**: 如何在WebView中执行JavaScript代码。 **8.6 Wi-Fi介绍** - 介绍了Wi-Fi技术的基本概念和在Android平台上的应用。 **8.7 小结** 这部分内容详细介绍了Android平台上的网络通信...

Global site tag (gtag.js) - Google Analytics