之前很多次用到过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请求(get请求、post请求)
HttpURLConnection请求和HttpClient请求...................................................................
适用于多线程的Httpclient请求的工具类
NULL 博文链接:https://bijian1013.iteye.com/blog/2310211
JAVA发送HttpClient请求及接收请求结果过程
httpClient请求工具类,适合多个系统间的数据请求
HttpClient 请求腾讯接口实例,详细操作,完整代码,按照各级别放置
android中使用HttpClient请求资源并返回数据
提交路径传递json参数(httpClient请求) 有代码和视频介绍;
详细说明在https://blog.csdn.net/zyf2533/article/details/118294101?spm=1001.2014.3001.5501
下面小编就为大家带来一篇java发送HttpClient请求及接收请求结果过程的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
使用HttpClient获取oAuth2.0中的、token及refreshToken
现在C++也不行了吗,网上找不到相关代码。为了搞清楚C++中如何使用httpClient和Newtonsoft,研究了一下午。我从未用C++编程,一直用C#,现学现卖。
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、...
本文主要介绍了请求HTPPS的实例.帮助请参考;http://blog.csdn.net/zhangxiaowei_/article/details/39339775
commons-codec-1.9.jar commons-logging-1.2.jar ...httpclient-4.5.3.jar httpclient-cache-4.5.3.jar httpclient-win-4.5.3.jar httpcore-4.4.6.jar httpmime-4.5.3.jar jna-4.1.0.jar jna-platform-4.1.0.jar
测试httpclient,主要测试json参数的接口,包括get请求和post请求。