美文网首页
httpClient 表单提交通用模板

httpClient 表单提交通用模板

作者: JeniusYang | 来源:发表于2017-02-23 09:48 被阅读0次
Java Web中涉及大量的请求调用,常用的方式一般就是RPC和Http两种方式,本篇主要利用Apache的httpClient对表单提交,抽象出一个httpProxy统一适配模板

一. pom依赖

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.1.2</version>
</dependency>

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.2.2</version>
</dependency>

二. Java实现

public <T>T httpProxy(String ip,int port,,String url,Map<String,T> requestBody,Map<String,T>headerMap)  
        org.apache.http.HttpHost proxy = new org.apache.http.HttpHost(ip, port);
        url = proxy + url;
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpResponse response = null;
        if (method.equals(Const.GET_METHOD)) { //GET提交
            HttpGet httpGet = new HttpGet(url);

            // 处理请求头
            for (Map.Entry<String, T> map : headerMap.entrySet()) {
                httpGet.setHeader(map.getKey(), map.getValue());
            }
            response = httpClient.execute(httpGet);
        } else if (method.equals(Const.POST_METHOD)) {//POST提交
            HttpPost httpPost = new HttpPost(url);
            /// 处理请求体
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            for (Map.Entry<String, T> map : requestBody.entrySet()) {
                params.add(new BasicNameValuePair(map.getKey(), map.getValue()));
            }
            httpPost.setEntity(new UrlEncodedFormEntity(params));

            // 处理请求头
            for (Map.Entry<String, T> map : headerMap.entrySet()) {
                httpPost.setHeader(map.getKey(), map.getValue());
            }
            response = httpClient.execute(httpPost);
        } else {
            response = null;
        }

        HttpEntity entity = response.getEntity();
        org.apache.http.Header[] headers = response.getAllHeaders();

        List<org.apache.http.Header> headerList = new ArrayList<org.apache.http.Header>();
        for (org.apache.http.Header header : headers) {
            headerList.add(header);
        }
         int code = response.getStatusLine().getStatusCode();
        InputStream in = entity.getContent();
        String responseBody = IOUtils.toString(in, HTTP.UTF_8);
        httpClient.getConnectionManager().shutdown();

        return new T(code, headerList, responseBody...);
    }

说明:
1. 用泛型代表返回类型可以自行封装
2. form表单提交默认只支持get跟post,其他方式在SpringMVC中需要另加配置http的methodfilter
3. 模板中省去了日志的输出
4. 各个类的源jar不能导错

相关文章

  • httpClient 表单提交通用模板

    Java Web中涉及大量的请求调用,常用的方式一般就是RPC和Http两种方式,本篇主要利用Apache的htt...

  • HttpClient的一些操作

    HttpClient4提交表单(包含文件) HttpPost 设置编码 HttpClient3提交表单(包含文件)...

  • 官方教程#4-1-表单

    表单模板 使用'post'方法提交表单Whenever you create a form that alters...

  • 护理病历移动端接口修改计划

    1.模板设计,添加分组属性。2.表单式模板,支持修改。①修改时判断,该模板是否关联通用表。②若关联通用表,则不对业...

  • 12、Struts2表单重复提交

    什么是表单重复提交表单的重复提交:若刷新表单页面, 再提交表单不算重复提交.在不刷新表单页面的前提下:多次点击提交...

  • Http的post请求中表单、json提交的请求头、请求体区别

    1、真正的表单提交,http默认的也是表单 python模拟表单提交 2、json提交 python模拟json提交

  • Javascript-表单脚本

    一、表单的基础知识 1、表单提交 普通提交 以编程方式调用submit()方法提交表单 解决表单重复提交的办法:1...

  • FormData

    表单,FormData 对象 表单概述 表单用来收集用户提交的数据,发送到服务器 表单提交 1. 提交 表单里...

  • HTML 表单

    解决父子元素边框重叠和高度塌陷的通用方法 表单 创建一个表单 使用input来获取用户的输入以 键值对 的形式提交...

  • 中后台产品的表单设计(附原型规范)

    前言 表单是数据录入和信息提交的通用形式,web端和移动端都很常见,通常由标签、输入项、提交按钮等多种元素构成。中...

网友评论

      本文标题:httpClient 表单提交通用模板

      本文链接:https://www.haomeiwen.com/subject/yixvwttx.html