Java httpclient解决方案中的中文传递

合集下载

java调用接口传参字符转义方法

java调用接口传参字符转义方法

java调用接口传参字符转义方法Java调用接口传参字符转义方法解析在Java开发中,调用接口是很常见的一种方式,而在调用接口的过程中,传递参数是必不可少的。

但是在传递参数时,有些特殊字符需要做字符转义处理,才能正确传递。

本文将介绍Java调用接口传参字符转义的方法,以解决这个问题。

1. 什么是字符转义在计算机编程中,字符转义指的是将一些特殊字符转换成对应的转义字符,以保证这些特殊字符不会破坏程序的正常执行。

在Java编程中,主要需要转义的字符包括:单引号(')、双引号(")、反斜杠(\)、回车符(CR)、换行符(LF)等。

2. 为什么需要字符转义在传递参数时,如果参数值包含特殊字符,那么这些字符将会被误认为是语法关键字,导致程序报错或不执行。

比如,传递参数中包含反斜杠(\)时,如果不做字符转义,反斜杠将被认为是一个转义字符,而不是一个普通的反斜杠符号。

此时程序将会出现语法错误,导致代码无法执行。

例如:String param = "C:\Users\hello";如果直接传输这个字符串,则会报错,因为Java会将\U解析为特殊字符。

为了解决这个问题,就需要对字符串中的反斜杠进行转义,在反斜杠前面添加一个反斜杠,变成两个反斜杠:String param = "C:\\Users\\hello";3. 如何进行字符转义在Java中,进行字符转义的方法是使用转义字符\,将需要转义的字符转换成对应的转义符。

例如:- \‘ 表示单引号(')- \" 表示双引号(")- \\ 表示反斜杠(\)- \r 表示回车符(CR)- \n 表示换行符(LF)因此,如果要传递一个字符串C:\Users\hello,就需要对字符串中的反斜杠进行转义,如下所示:String param = "C:\\Users\\hello";在实际开发中,常常需要动态传递参数,此时就需要使用变量。

JAVA-用HttpClient来模拟浏览器GET,POST

JAVA-用HttpClient来模拟浏览器GET,POST

一般的情况下我们都是使用IE或者Navigator浏览器来访问一个WEB服务器,用来浏览页面查看信息或者提交一些数据等等。

所访问的这些页面有的仅仅是一些普通的页面,有的需要用户登录后方可使用,或者需要认证以及是一些通过加密方式传输,例如HTTPS。

目前我们使用的浏览器处理这些情况都不会构成问题。

不过你可能在某些时候需要通过程序来访问这样的一些页面,比如从别人的网页中“偷”一些数据;利用某些站点提供的页面来完成某种功能,例如说我们想知道某个手机号码的归属地而我们自己又没有这样的数据,因此只好借助其他公司已有的网站来完成这个功能,这个时候我们需要向网页提交手机号码并从返回的页面中解析出我们想要的数据来。

如果对方仅仅是一个很简单的页面,那我们的程序会很简单,本文也就没有必要大张旗鼓的在这里浪费口舌。

但是考虑到一些服务授权的问题,很多公司提供的页面往往并不是可以通过一个简单的URL就可以访问的,而必须经过注册然后登录后方可使用提供服务的页面,这个时候就涉及到COOKIE问题的处理。

我们知道目前流行的动态网页技术例如ASP、JSP无不是通过COOKIE来处理会话信息的。

为了使我们的程序能使用别人所提供的服务页面,就要求程序首先登录后再访问服务页面,这过程就需要自行处理cookie,想想当你用.HttpURLConnection来完成这些功能时是多么恐怖的事情啊!况且这仅仅是我们所说的顽固的WEB服务器中的一个很常见的“顽固”!再有如通过HTTP来上传文件呢?不需要头疼,这些问题有了“它”就很容易解决了!我们不可能列举所有可能的顽固,我们会针对几种最常见的问题进行处理。

当然了,正如前面说到的,如果我们自己使用.HttpURLConnection来搞定这些问题是很恐怖的事情,因此在开始之前我们先要介绍一下一个开放源码的项目,这个项目就是Apache开源组织中的httpclient,它隶属于Jakarta的commons项目,目前的版本是2.0RC2。

javahttpput请求方式_使用HttpClient发送GETPOSTPUTDe

javahttpput请求方式_使用HttpClient发送GETPOSTPUTDe

javahttpput请求方式_使用HttpClient发送GETPOSTPUTDe在Java中,我们可以使用HttpClient库来发送HTTP请求,包括GET、POST、PUT、DELETE等请求方式。

下面是使用HttpClient发送这些请求的示例代码。

1.发送GET请求:```javapublic class HttpGetExamplepublic static void main(String[] args) throws Exceptionint statusCode = response.getStatusLine(.getStatusCode(;System.out.println("Status Code: " + statusCode);//处理响应数据//...}```2.发送POST请求:```javapublic class HttpPostExamplepublic static void main(String[] args) throws Exception//设置请求体StringEntity requestBody = new StringEntity("request body", "UTF-8");int statusCode = response.getStatusLine(.getStatusCode(;System.out.println("Status Code: " + statusCode);//处理响应数据//...}```3.发送PUT请求:```javapublic class HttpPutExamplepublic static void main(String[] args) throws Exception//设置请求体StringEntity requestBody = new StringEntity("request body", "UTF-8");int statusCode = response.getStatusLine(.getStatusCode(;System.out.println("Status Code: " + statusCode);//处理响应数据//...}```4.发送DELETE请求:```javapublic class HttpDeleteExamplepublic static void main(String[] args) throws Exceptionint statusCode = response.getStatusLine(.getStatusCode(;System.out.println("Status Code: " + statusCode);//处理响应数据//...}```以上代码示例了如何使用HttpClient库发送GET、POST、PUT、DELETE请求,并处理响应数据。

Java Web项目开发中的中文乱码问题与对策

Java Web项目开发中的中文乱码问题与对策

Java Web项目开发中的中文乱码问题与对策在Java Web项目开发过程中,中文乱码问题是一个常见的挑战。

乱码问题通常发生在将中文数据存储到数据库、从数据库读取中文数据、在页面上展示中文数据等环节,如果不正确处理乱码问题,会导致用户无法正常阅读中文内容,影响用户体验。

下面介绍一些常见的中文乱码问题和对策。

1. 数据库乱码:当将中文数据存储到数据库中时,如果数据库的字符集不是UTF-8,会导致乱码问题。

解决方法是将数据库字符集设置为UTF-8,确保中文数据能够正确存储和读取。

2. 请求参数乱码:当用户提交包含中文字符的表单时,请求参数中的中文字符可能会出现乱码问题。

解决方法是在服务器端统一设置请求参数的编码为UTF-8,可以通过在web.xml文件中添加如下配置实现:```xml<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-c lass><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>``````html<meta charset="UTF-8">```4. 文件编码乱码:如果在Java Web项目中读取外部的文本文件,文件的编码可能与项目编码不一致,导致读取中文内容乱码。

HttpClient多文件上传代码及普通参数中文乱码问题解决

HttpClient多文件上传代码及普通参数中文乱码问题解决

HttpClient多⽂件上传代码及普通参数中⽂乱码问题解决该随笔记录了在实际项⽬中使⽤HttpClient调⽤外部api,需上传⽂件和普通参数的代码。

笔者在使⽤ HttpClient 调⽤ http api 接⼝时,需要服务端上传⽂件和⼀些普通参数给 http api,如果使⽤ Java ⾃带的 HttpURLConnection 请求的话,发送multipart/form-data + POST 请求会⽐较⿇烦,需要设置⼀些边界(将⽂件与⽂件、⽂件与普通参数之间隔开,便于接收者截取,这是 http 协议要求的)。

因为上传⽂件和普通参数时,服务端读取报⽂是根据边界值来截取的,如果使⽤原⽣的 HttpURLConnection 则⽐较⿇烦,所以笔者采⽤ HttpClient ⼯具,httpclient是apache 软件基⾦会下的⼦项⽬,它很好的封装了Http⼯具,⾯向对象的思想省去了很多细节,使程序员关注与业务逻辑处理,不⽤关注这些通讯细节。

笔者使⽤HTTPClient实现⽂件的上传,使⽤ MultipartEntityBuilder 构造请求体,实现 multipart/form-data + POST 请求http接⼝。

下⾯提供了使⽤时的代码实现,包括服务端和客户端。

不过,笔者在使⽤的过程中发现,当传递的普通参数有中⽂时,对⽅接到的参数会乱码,因为开始笔者使⽤的是multipartEntity.addTextBody(key, postParam.get(key));的⽅式设置普通参数。

为了解决乱码问题,最后查到了解决办法,记录如下。

如下代码是可以上传多个⽂件和普通参数的,使⽤ multipart/form-data + POST ⽅式提交,模拟浏览器在页⾯上 form表单的提交⽅式。

1/**2 * httpclient ⽂件上传3 * @param postFiles4 * @param postUrl5 * @param postParam6 * @return7*/8public static Map<String, Object> uploadFileByHttpPost(File[] postFiles, String postUrl, Map<String, String> postParam) {9 Map<String, Object> resultMap = new HashMap<String, Object>();10 CloseableHttpClient httpClient = HttpClients.createDefault();11try {12//把⼀个普通参数和⽂件上传给下⾯这个api接⼝13 HttpPost httpPost = new HttpPost(postUrl);14//设置传输参数,设置编码。

Java后端HttpClientPost提交文件流及服务端接收文件流

Java后端HttpClientPost提交文件流及服务端接收文件流

Java后端HttpClientPost提交⽂件流及服务端接收⽂件流客户端将⽂件转换为流发送:依赖的包:<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.4</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.4</version></dependency>import com.alibaba.fastjson.JSONObject;import java.io.*;import .HttpURLConnection;import .URL;public static void main(String[] args) throws IOException {DataInputStream in = null;OutputStream out = null;HttpURLConnection conn = null;JSONObject resposeTxt = null;InputStream ins = null;ByteArrayOutputStream outStream = null;try {// URL url = new URL("http://192.168.3.11:8081/mes-boot-doc/test/fileupload?fileName=shafei.xls");URL url = new URL("http://localhost:8081/mes-boot-doc/test/fileupload?fileName=shafei.xls");conn = (HttpURLConnection) url.openConnection();// 发送POST请求必须设置如下两⾏conn.setDoOutput(true);conn.setUseCaches(false);conn.setRequestMethod("POST");conn.setRequestProperty("Content-Type", "text/html");conn.setRequestProperty("Cache-Control", "no-cache");conn.setRequestProperty("Charsert", "UTF-8");conn.connect();conn.setConnectTimeout(10000);out = conn.getOutputStream();File file = new File("C:/Users/Dell/Desktop/print/shafei.xls");in = new DataInputStream(new FileInputStream(file));int bytes = 0;byte[] buffer = new byte[1024];while ((bytes = in.read(buffer)) != -1) {out.write(buffer, 0, bytes);}out.flush();// 返回流if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {ins = conn.getInputStream();outStream = new ByteArrayOutputStream();byte[] data = new byte[1024];int count = -1;while ((count = ins.read(data, 0, 1024)) != -1) {outStream.write(data, 0, count);}data = null;resposeTxt = JSONObject.parseObject(new String(outStream.toByteArray(), "UTF-8"));}} catch (Exception e) {e.printStackTrace();} finally {if (in != null) {in.close();}if (out != null) {out.close();}if (ins != null) {ins.close();}if (outStream != null) {outStream.close();}if (conn != null) {conn.disconnect();}}}服务端接收⽂件流⽣成⽂件:@PostMapping("/fileupload")public String uploadFile(HttpServletRequest request,HttpServletResponse response) throws Exception{ String fileName = request.getParameter("fileName");("filename:"+fileName);// String fileName ="shafei.xls";// String fileFullPath = "C:/Users/Dell/Desktop/print/test/" + fileName;String fileFullPath = "/root/uploadfile/apache-tomcat-8.5.42/" + fileName;InputStream input = null;FileOutputStream fos = null;try {input = request.getInputStream();File file = new File("/root/uploadfile/apache-tomcat-8.5.42/");if(!file.exists()){file.mkdirs();}fos = new FileOutputStream(fileFullPath);int size = 0;byte[] buffer = new byte[1024];while ((size = input.read(buffer,0,1024)) != -1) {fos.write(buffer, 0, size);}//响应信息 json字符串格式Map<String,Object> responseMap = new HashMap<String,Object>();responseMap.put("flag", true);//⽣成响应的json字符串String jsonResponse = JSONObject.toJSONString(responseMap);sendResponse(jsonResponse,response);} catch (IOException e) {//响应信息 json字符串格式Map<String,Object> responseMap = new HashMap<String,Object>();responseMap.put("flag", false);responseMap.put("errorMsg", e.getMessage());String jsonResponse = JSONObject.toJSONString(responseMap);sendResponse(jsonResponse,response);} finally{if(input != null){input.close();}if(fos != null){fos.close();}}return null;}/*** 返回响应** @throws Exception*/private void sendResponse(String responseString,HttpServletResponse response) throws Exception { response.setContentType("application/json;charset=UTF-8");PrintWriter pw = null;try {pw = response.getWriter();pw.write(responseString);pw.flush();} finally {IOUtils.closeQuietly(pw);}}。

httpclient4 中文版帮助文档

httpclient4 中文版帮助文档

httpclient4 中文版帮助文档,最新官方版翻译版前言超文本传输协议(HTTP)也许是当今互联网上使用的最重要的协议了。

Web服务,有网络功能的设备和网络计算的发展,都持续扩展了HTTP协议的角色,超越了用户使用的Web 浏览器范畴,同时,也增加了需要HTTP协议支持的应用程序的数量。

尽管包提供了基本通过HTTP访问资源的功能,但它没有提供全面的灵活性和其它很多应用程序需要的功能。

HttpClient就是寻求弥补这项空白的组件,通过提供一个有效的,保持更新的,功能丰富的软件包来实现客户端最新的HTTP标准和建议。

为扩展而设计,同时为基本的HTTP协议提供强大的支持,HttpClient组件也许就是构建HTTP客户端应用程序,比如web浏览器,web服务端,利用或扩展HTTP协议进行分布式通信的系统的开发人员的关注点。

1. HttpClient的范围基于HttpCore[/httpcomponents-core/index.html]的客户端HTTP运输实现库基于经典(阻塞)I/O内容无关2. 什么是HttpClient不能做的HttpClient 不是一个浏览器。

它是一个客户端的HTTP通信实现库。

HttpClient的目标是发送和接收HTTP报文。

HttpClient不会去缓存内容,执行嵌入在HTML页面中的javascript 代码,猜测内容类型,重新格式化请求/重定向URI,或者其它和HTTP运输无关的功能。

第一章基础1.1 执行请求HttpClient 最重要的功能是执行HTTP方法。

一个HTTP方法的执行包含一个或多个HTTP请求/HTTP响应交换,通常由HttpClient的内部来处理。

而期望用户提供一个要执行的请求对象,而HttpClient期望传输请求到目标服务器并返回对应的响应对象,或者当执行不成功时抛出异常。

很自然地,HttpClient API的主要切入点就是定义描述上述规约的HttpClient接口。

java中文乱码解决方法

java中文乱码解决方法

java中文乱码解决方法1、解决文件中文乱码:1.1、修改文件字符编码:由于不同系统,比如Unix下用GBK格式编辑的文件,在Windows中就会乱码,此时可以使用Notepad++(记事本插件),将文件编码转换为系统默认的utf-8,8为Unicode编码。

1.2、修改系统语言及字符编码:此外,也可以通过改变操作系统的语言及字符编码,这种方法我们可以在控制面板-区域和语言的地方进行修改,再次点击其中的管理,在点击详细设置,这时候就可以看到字符集,将其设置为utf-8。

2、解决程序中文乱码:2.1、使用unicod-8格式编码:在这种情况下,一定要注意程序代码的编码格式,一定要以utf-8格式进行编码,而不是GBK,否则一样会出现乱码。

2.2、设置字符集:有时候,可以在程序中设置语言字符集,例如:response.setContentType("text/html;charset=utf-8");用于普通的JSP页面编码设置,也可以在web.xml中设置characterEncoding3、修改Tomcat的默认编码:可以修改tomcat的server.xml文件,将其默认编码为utf-8,在相应的位置加上URIEncoding="utf-8"。

4、前端乱码解决方法:也可以到浏览器中去修改编码,比如:Firefox浏览器中,可以按Ctrl + U,Chrome可以按Ctrl + U,IE下可以第一个菜单栏中点击View,然后选择Encoding,转换为相应的编码即可。

5、对数据库使用正确的编码:在不同的数据库中当我们有gbk的字符编码的时候,一定要创建数据库时候指定好字符编码,让数据库与整个程序保持一致,如果仅仅程序有编码时,数据库没有则容易出现乱码。

总之,我们在解决Java中文乱码的问题是要以系统- web页面-程序-数据库为关键点进行检查,以确保编码的一致性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java httpclient解决方案中的中文传递(2009-03-05 17:21:33)标签:杂谈1 Commons HttpClient 开源项目简介Http 协议是一种应用十分广泛的网络应用层协议。

在Java 网络编程中我们会经常碰到Http 协议编程, 虽然JDK 提供了HttpURLConnection 编程接口对Http 协议进行支持, 但是由于协议应用本身的复杂性, 使得在大量实际项目单纯使用JDK 进行Http编程仍然相对比较困难。

针对这种情况, 开源软件组织Apach 推出了HttpClient 开源组件, 并且提供稳定持续的升级版本, 因此在实际项目中采用HttpClient 组件进行Http 协议编程是一种高效经济的解决方案。

2 Commons HttpClient 中文环境下编程常见问题由于HttpClient 组件设计的高度灵活性及易用性, 应用HttpClient 组件进行编程本身并不复杂。

但是由于Java 编程环境自身容易出现字符编码问题, 衍生于Java 语言并主要由英语语系国家技术人员推出的HttpClient 组件自然在中文环境中会存在一定的编码问题, 同时由于部分Web 浏览器及Web 服务器并未严格实现标准Http 协议规范, 使得比较严格遵循标准Http 协议规范的Http-Client 组件在与部分浏览器及服务器进行交互时会出现少量兼容性问题。

笔者在中文环境下用HttpClinet 开发校外资源访问系统的过程中碰到系列HttpClient 技术问题, 经过测试查证找到相应的解决办法, 这对解决HttpClient 编程问题, 特别是中文环境下Http-Client 编程具有较大的借鉴作用。

( 注: 本文编程的HttpClient 组件版本为: Release 3.1 Beta 1)3 Commons HttpClient 编程的典型问题及解决办法3.1 URL 中文参数无法识别的问题通常情况在Commons HttpClient 编程中我们用下列语句就可以向一个目标服务器提交一个Web 请求:HttpClient client=new HttpClient();GetMethod method = new GetMethod (url);//本示例使用Get 方法, 当然也可使用Post 方法PostMethod method//=new PostMethod(url);client.executeMethod(method);InputStream receiver=method.getResponseBodyAsStream();如果URL 没有中文参数,以上语句执行起来没有任何问题,但是如果URL 中含有中文字符,中文参数将无法被Web 服务器识别, 程序虽然可以正常运行, 但却无法得到正确结果。

同时返回的Http 响应头, 如果含有中文字符也将出现乱码。

分析源码发现, 这是HttpClient 中的HttpElementCharset 参数( 创建HTTP headers 的字符集) 的默认值为US- ASCII, ContentCharset 参数( 创建contentbody 的字符集) 的默认值为ISO- 8859- 1 的原故, 因此需要使用下列语句改变这些参数的默认值:client = new HttpClient();params=client.getParams();params.setHttpElementCharset("GBK");params.setContentCharset("GBK");或者使用:method.getParams().setHttpElementCharset("GBK");method.getParams().setCredentialCharset("GBK");method.getParams().setContentCharset("GBK");第一种方式可能会更好, 它在HttpClient 初始化时就对字符默认参数进行了设置, 作用范围更广。

第二种方式仅对使用具体的请求方法时起作用, 字符集的作用范围有限。

一般情况下我们用上述语句即可实现中文字符的正确识别。

但要深入使用我们会发现如果URL 中文参数含有中文特殊字符(如“{”, “}”等符号), 程序将抛出URIException 异常,导致请求无法完成。

继续研究HttpClient 的源代码发现, URI 类是负责解析URL 的核心类, 控制URL 编码字符集是ProtocolCharset 参数, 默认情况下为UTF- 8 编码, 同时还在URI 的构造函数提供了一个逻辑值来决定是否过滤非法字符, 而恰恰一些中文特殊字符也被当成非法的字符过滤掉了, 根据产生问题的原因, 我们在基本解决中文编码问题的基础上结合以下容错的方法来最终保证中文编码的正确识别:String url=⋯.;try{strUri=new URI(uri,true,"GBK");}catch(URIException e){strUri=new URI(uri,false,"GBK");}method.setURI(strUri);经测试上述办法解决大量的已知URL 中文参数不能识别的问题, 当然如果在程序个别地方上述方法依然不能奏效, 你还可以使用Java 中文编码转换的基础解决方法, 借助ISO- 8859- 1 标准编码过渡, 能够轻易将JVM在网络传送过程转换成的UTF8 编码还原成GBK 编码, 下面的代码实现了这一功能:byte [] b;String utf8_value;utf8_value = request.getParameter("NAME");//从HTTP 流中取"NAME"的UTF8 数据b = utf8_value.getBytes("8859_1"); //中间用ISO- 8859- 1 过渡String name = new String(b, "GB2312"); //转换成GB2312 字符3.2 URL 中的%问题部分不太规范的中文网站中使用%作URL 中参数的一部分传递给服务器, 而中文Windows 中的许多主流浏览器也兼容这一例外。

事实上%是作为Http 协议中的UrlEncode 编码的保留字符不能直接在URL 中使用, 必须被转义成%25 这样的形式, 事实上HttpClient 就会自动将字符%转化成%25。

正是这种原因当HttpClient 截获IE 浏览器的请求并将其转发到服务器时, 将会导致查询参数错误。

分析HttpClient 的源码发现, 这一转化是在URI 类中实现的, 经反复测试未能找到一种通过HttpClient 公开接口实现这一兼容性的方法。

目前只能采取修改URI 类源码重新编译的办法来实现:public static final BitSet allowed_query = new BitSet(256);// Static initializer for allowed_querystatic {allowed_query.or(uric);allowed_query.clear('%');将源码中此语句去掉或注释即可}3.3 Cookie 整合问题IE 和Firefox 在发送请求给服务器时会把所有的cookie 打包成一个, 然后在这个cookie 里按照分号把每一项隔开, 中间有个空格。

但httpclient 会在header 里构建多个cookie 项, 每一项只含有一个cookie, 这同IE 是不一样的。

为了使用IE 这种发送方式, 我们需要设置一个请求方法中的一个Cookie 参数, 参考设置如下:method.getParams().setParameter(HttpMethodParams.SINGLE_COOKIE_HEA DER,new Boolean(true)); //使多个cookie 合并成一个cookie 头3.4 chunked 编码不规范的问题有时候Web 服务器生成HTTP Response 是无法在Header 就确定消息大小的, 这时一般来说服务器将不会提供Content- Length的头信息, 而采用Chunked 编码动态的提供body 内容的长度。

Chunked 编码使用若干个Chunk 串连而成, 由一个标明长度为0 的chunk 标示结束。

使用十分广泛的Tomcat Web 服务器大量采用了Chunked 编码方案, 然而早期的Tomcat Web 服务器实现并不十分规范, 并没有以标明长度为0 的chunk 标示内容传输结束。

因此HttpClient 在接收这些早期的Tomcat Web 服务器的Http 响就会导致解析错误。

分析HttpClient 源码发现, ChunkedInputStream 类负责在HttpClient 中解析chunked 编码, 修改一个此类中getChunk-SizeFromInputStream(final InputStream in)方法, 可使标准的和上述非标准的chunked 编码均可正常解析。

具体修改方法如下:private static int getChunkSizeFromInputStream(final InputStream in) throws IOException {ByteArrayOutputStream baos = new ByteArrayOutputStream();// States: 0=normal, 1=\r was scanned, 2=inside quoted string, - 1=end int state = 0;while (state ! = - 1) {int b = in.read();if (b == - 1) {return 0;//新增加语句throw new IOException("chunked stream ended unexpectedly");//原始语句, 需将其去掉或注释掉}3.5 Host 头无法修改的问题HttpClient 本身在HttpMethodBase 类中提供增加和修改Http 请求头的addRequestHeader 和setRequestHeader 方法, 然而却无法修改Host 参数, 而在一此特殊的场合又要求修改这一参数。

相关文档
最新文档