之前很多次用到过httpclient,尤其是在做接口对接的时候,今天在做接口对接的时候,发现了两个问题:1.HttpClient 对象的executeMethod 方法里面的参数是PostMethod 对象,执行这行代码的时候,有些情况下,执行到这段代码的时候所花费的时间比较长。
2.PostMethod 对象的getResponseBodyAsString 返回值是string的时候,当返回值过大的时候会给你警告:
警告: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
所以可以按警告的要求将采用getResponseBodyAsStream 方法来获取返回值,具体如下:
BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream())); StringBuffer stringBuffer = new StringBuffer(); String str = ""; while((str = reader.readLine())!=null){ stringBuffer.append(str); } String ts = stringBuffer.toString();
return ts。结束.
但是对于第一个问题我在网上找了好多资料,说是有的时候PostMethod 对象的值过大,导致client.executeMethod(post);这段代码执行时间过长,但是我在debug的过程中发现,其实post的大小都是差不多的,都是传了一个值,所以我现在还在想到底是什么原因,有知道的大神可以在这里分享下,大家一起来交流。
/** * 发送http请求,以post方式 * @param url * @return * @throws IOException * @throws HttpException */ public static String doPost(String url,String name,String responeJsonStr) throws IOException,HttpException{ //强制设置可信任证书 Protocol myhttps = new Protocol("https", new MySSLProtocolSocketFactory(), 443); Protocol.registerProtocol("https", myhttps); HttpClient client = new HttpClient(); PostMethod post = new PostMethod(url); post.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8"); if(StrUtil.isNotNull(name)){ NameValuePair[] param = {new NameValuePair(name,responeJsonStr)} ; post.setRequestBody(param); }else{ post.setRequestBody(responeJsonStr); } post.getParams().setContentCharset("utf-8"); //发送http请求 String respStr = ""; client.executeMethod(post); respStr = post.getResponseBodyAsString(); return respStr; }
相关推荐
httpclient 请求两种方式,如果有cookie可加上cookies,同步获取返回值
在本实例中,我们将深入探讨如何使用HttpClient来发送请求以及处理返回的数据。 首先,让我们了解HttpClient的基本用法。Apache HttpClient库提供了一个`CloseableHttpClient`接口,它是执行HTTP请求的主要入口点。...
以上是使用HttpClient请求OAuth服务器中token的基本流程。实际应用中,可能需要根据具体授权服务器的要求和客户端类型进行调整。在文件"oauthtest"中,可能包含了实现这些步骤的示例代码或测试用例,供参考和学习。...
### JAVA发送HttpClient请求及接收请求结果过程 #### 一、概述 在Java开发过程中,经常需要与外部系统进行HTTP通信,比如发送POST或GET请求来获取数据或提交数据。Apache HttpClient是一个强大的HTTP客户端库,提供...
HttpURLConnection请求和HttpClient请求...................................................................
适用于多线程的Httpclient请求的工具类
这个主题“提交路径传递json参数(httpClient请求)”主要关注如何通过HttpClient发送包含JSON数据的POST请求。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读性和易于解析的特性,常用于...
在java后端发送HTTPClient请求工具类
android中使用HttpClient请求资源并返回数据
HttpClient库广泛应用于需要与Web服务器进行交互的Java应用中,包括发送GET和POST请求等基本操作。 ### GET请求 GET请求是最常见的HTTP请求方法,用于从服务器获取资源。使用HttpClient发起GET请求的步骤如下: 1....
标题中的“对于C#(HttpClient)方式网络请求的封装”是指使用C#编程语言,特别是通过HttpClient类来处理HTTP网络请求,并将这个过程进行抽象和封装,以便在多个地方重复使用。HttpClient是.NET Framework和.NET ...
4. 使用HttpClient的execute()方法发送请求,并获取HttpResponse对象。 5. 解析HttpResponse,获取状态码、响应头和实体内容。 6. 清理资源,关闭连接。 在实际开发中,你可能还需要考虑错误处理、重试策略、连接池...
在本文中,我们将深入探讨HttpClient工具类及其在多个系统间数据请求中的应用。 首先,我们看到有两个文件:`HttpClientUtils.java`和`RestClient.java`。`HttpClientUtils`通常是封装了HttpClient核心操作的工具类...
4. **执行请求**:通过HttpClient实例发送请求并获取HttpResponse: ```java HttpResponse response = httpClient.execute(request); ``` 5. **处理响应**:从HttpResponse中读取返回的数据,这可能是JSON、XML...
在Java Web开发中,HTTPClient库是一个非常强大的工具,它允许开发者执行HTTP和HTTPS请求,进行数据交互。本文将深入探讨如何使用HTTPClient库来发送HTTPS请求,以及涉及到的证书管理相关知识。 首先,理解HTTPS...
commons-codec-1.9.jar、commons-logging-1.2.jar、fluent-hc-4.5.1.jar、httpclient-4.5.1.jar、httpclient-cache-4.5.1.jar、httpclient-win-4.5.1.jar、httpcore-4.4.3.jar、httpmime-4.5.1.jar、jna-4.1.0.jar、...
现在C++也不行了吗,网上找不到相关代码。为了搞清楚C++中如何使用httpClient和Newtonsoft,研究了一下午。我从未用C++编程,一直用C#,现学现卖。
此外,HttpClient还具有很高的灵活性和可扩展性,能够满足各种复杂的网络请求需求。 #### 三、调用WebService的基本步骤 1. **构建SOAP消息**:WebService通常使用SOAP协议进行通信。因此,首先需要构造一个符合...