文档章节

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

MinghanSui
 MinghanSui
发布于 2017/06/02 17:31
字数 235
阅读 8
收藏 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
粉丝 1
博文 45
码字总数 14714
作品 0
沈阳
程序员
私信 提问
HttpClient4.x:Get和Post提交数据

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

liangtee
2012/12/02
0
0
【J2EE系列】HttpClient 学习整理 [转]

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

磊神Ray
2012/01/12
0
0
Android下的网络编程 & 代理的使用

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

小编辑
2010/08/12
5.5K
2
应用HttpClient来对付各种顽固的WEB服务器

一般的情况下我们都是使用IE或者Navigator浏览器来访问一个WEB服务器,用来浏览页面查看信息或者提交一些数据等等。所访问的这些 页面有的仅仅是一些普通的页面,有的需要用户登录后方可使用...

红薯
2008/10/05
4.1K
2
通过JAVA程序来获取某个页面的信息 HttpClient

今天碰到一个问题,就是跨域调取数据的问题.....应该算是跨域吧,看到程序时用httpClient写的,晚上回来看了一下,非常好,看到一篇好文章,转过来 一般的情况下我们都是使用IE或者Navigator...

枫爱若雪
2012/04/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
44分钟前
6
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
45分钟前
3
0
my.ini

1

architect刘源源
今天
6
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
今天
7
0
寻找数学的广度——《这才是数学》读书笔记2700字

寻找数学的广度——《这才是数学》读书笔记2700字: 文|程哲。数学学习方式之广:国内外数学教育方面的专家,进行了很多种不同的数学学习方式尝试,如数学绘本、数学游戏、数学实验、数学步道...

原创小博客
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部