文档章节

记录一个用httpClient的方式访问接口的例子

MinghanSui
 MinghanSui
发布于 2017/06/02 17:31
字数 235
阅读 27
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

    /**
     * 获取API数据
     *
     * @param interfaceMethodName 接口方法名
     * @param parameterMap        参数map
     * @return Stirng
     */
public static JSONObject getResultJsonByHttpClient(
            String interfaceMethodName, Map<String, Object> parameterMap) {
        NameValuePair[] param;
        if (parameterMap != null && parameterMap.size() > 0) {
            param = new NameValuePair[parameterMap.size()];
            int i = 0;
            for (String key : parameterMap.keySet()) {
                String value = parameterMap.get(key).toString();
                param[i] = new NameValuePair(key, value);
                i++;
            }
        } else param = new NameValuePair[0];

        HttpClient httpClient = new HttpClient();
        PostMethod postMethod = new PostMethod();
        JSONObject resultJson = new JSONObject();
        try {
            postMethod.setPath("这是一个URL这是一个URL这是一个URL这是一个URL这是一个URL这是一个URL");
            postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
            postMethod.addParameters(param);
            httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5 * 1000);
            httpClient.getHttpConnectionManager().getParams().setSoTimeout(20 * 1000);
            httpClient.executeMethod(postMethod);
            InputStream responseStream = postMethod.getResponseBodyAsStream();
            StringBuilder buffer = new StringBuilder();
            InputStreamReader inputStreamReader = new InputStreamReader(responseStream, "UTF-8");
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String str;
            while ((str = bufferedReader.readLine()) != null) {
                buffer.append(str);
            }
            resultJson = JSONObject.parseObject(buffer.toString());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            postMethod.releaseConnection();
        }
        return resultJson;
    }

用httpclient通过postmethod对象获取返回值的话有时用 getResonseBodyAsString  返回结果会报出异常:

org.apache.commons.httpclient.HttpMethodBase getResponseBody
警告: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.

所以此处应该用getResponseBodyAsStream

© 著作权归作者所有

MinghanSui
粉丝 2
博文 52
码字总数 15360
作品 0
沈阳
程序员
私信 提问
加载中

评论(0)

.NET Core 中正确使用 HttpClient 的姿势

为了更方便在服务端调用 HTTP 请求,微软在 .NET Framework 4.x 的时候引入了 HttpClient。但 HttpClient 有很多严重问题,一直饱受诟病,比如 InfoQ 的这篇文章 t.cn/Evzy80y,吐槽了 Http...

osc_1njk964l
2018/09/13
5
0
HttpClient4.x:Get和Post提交数据

HttpClient是一款用Java写的非常好用的基于Http协议的客户端编程工具包。具体举例来讲,用它可以模拟form表单提交数据动作,可以模拟访问网页动作及得到网页源码内容等等,这两点或许是我们在...

liangtee
2012/12/02
9.5K
0
Android下的网络编程 & 代理的使用

1. 使用 标准Java接口: 设计的类: java.net.* 基本步骤: 1) 创建 URL 以及 URLConnection / HttpURLConnection 对象 2) 设置连接参数 3) 连接到服务器 4) 向服务器写数据 5)从服务器读取数据...

小编辑
2010/08/12
5.6K
2
【J2EE系列】HttpClient 学习整理 [转]

HttpClient 是我最近想研究的东西,以前想过的一些应用没能有很好的实现,发现这个开源项目之后就有点眉目了,令人头痛的cookie问题还是有办法解决滴。在网上整理了一些东西,写得很好,寄放...

磊神Ray
2012/01/12
240
0
WebApiClient的SteeltoeOSS.Discovery扩展

1 背景 从园子里看到一些朋友在某些项目开发中,选择的架构是spring cloud搭建底层微服务框架,dotnet core来编写业务逻辑,SteeltoeOSS.Discovery是dotnet和spingcloud的桥梁,为dotnet提供...

osc_dos38x1o
2018/09/26
1
0

没有更多内容

加载失败,请刷新页面

加载更多

如何将新的本地分支推送到远程Git存储库并进行跟踪?

问题: I want to be able to do the following: 我希望能够做到以下几点: Create a local branch based on some other (remote or local) branch (via git branch or git checkout -b ) 基......

技术盛宴
16分钟前
14
0
Python笔记:记pandas中几个好用的函数

pandas是python数据分析常用的库之一!从数据加载到预处理,从数据分析到可视化,pandas提供了一站式服务。而以下这几个聚合统计函数,更是好用! 本文主要讲解pandas中的7个聚合统计相关函数...

tengyulong
44分钟前
23
0
使用“ let”和“ var”有什么区别? - What's the difference between using “let” and “var”?

问题: ECMAScript 6 introduced the let statement . ECMAScript 6引入了let语句 。 I've heard it that it's described as a "local" variable, but I'm still not quite sure how it beh......

javail
今天
17
0
如何将文件重置或还原到特定版本? - How can I reset or revert a file to a specific revision?

问题: I have made some changes to a file which has been committed a few times as part of a group of files, but now want to reset/revert the changes on it back to a previous ver......

fyin1314
今天
24
0
OSChina 周五乱弹 —— 头发和不要头发,你总要选一个

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《雾 缀じた街 ふたつのかげ》- Porkkana 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
49
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部