博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTPClient 使用
阅读量:6513 次
发布时间:2019-06-24

本文共 4745 字,大约阅读时间需要 15 分钟。

hot3.png

所需jar

    <dependency>

            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>fluent-hc</artifactId>
            <version>4.2</version>
        </dependency>
java调用方法

package com.zc.finance.menu;

import java.io.Console;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.alibaba.fastjson.JSON;
import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;
import com.zc.common.BaseController;
import com.zc.finance.resoruce.domain.Role;
public class MenuController extends BaseController {
    /**
     * 导航栏
     */
    public String url12="";
    
    
    @RequestMapping(value = "/role/addRole")
    public void getHttpClientUpdateRole(String url, Map<String, String> params,
            HttpServletResponse response,HttpServletRequest request,   Role model) {
        
        String role = JSON.toJSONString(model);  
        request.getParameter("roleName");
        String url1 = url12
        params.put("role", role);
        String str = post(url1, params);
        response.setContentType("text/html;charset=utf-8");
        try {
            response.getWriter().write(str);
            response.getWriter().flush();
            response.getWriter().close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //return str;
    }
    
    public String post(String url, Map<String, String> params) {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        String body = null;
        // log.info("create httppost:" + url);
        HttpPost post = postForm(url, params);
        body = invoke(httpclient, post);
        httpclient.getConnectionManager().shutdown();
        return body;
    }
    public String get(String url) {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        String body = null;
        
        // log.info("create httppost:" + url);
        HttpGet get = new HttpGet(url);
        body = invoke(httpclient, get);
        httpclient.getConnectionManager().shutdown();
        return body;
    }
    private String invoke(DefaultHttpClient httpclient, HttpUriRequest httpost) {
        HttpResponse response = sendRequest(httpclient, httpost);
        String body = paseResponse(response);
        return body;
    }
    private String paseResponse(HttpResponse response) {
        String body = null;
        // log.info("get response from http server..");
        HttpEntity entity = response.getEntity();
        // log.info("response status: " + response.getStatusLine());
        String charset = EntityUtils.getContentCharSet(entity);
        // log.info(charset);
        try {
            body = EntityUtils.toString(entity);
            // log.info(body);
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        /**
         * 判断返回数据类型是否是json格式的, 是说明请求成功,不是说明用户未登陆或登陆超时
         */
        try {
            JSON.parse(body);
        } catch (Exception e) {
            body = "用户未登陆或登陆超时!";
            e.printStackTrace();
        }
        return body;
    }
    private HttpResponse sendRequest(DefaultHttpClient httpclient,
            HttpUriRequest httpost) {
        // log.info("execute post...");
        HttpResponse response = null;
        
        try {
            response = httpclient.execute(httpost);
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return response;
    }
    private HttpPost postForm(String url, Map<String, String> params) {
        HttpPost httpost = new HttpPost(url);
        
        List<NameValuePair> nvps = new ArrayList<NameValuePair>();
        Set<String> keySet = params.keySet();
        for (String key : keySet) {
            nvps.add(new BasicNameValuePair(key,  params.get(key)));
        }
        try {
            // log.info("set utf-8 form entity to httppost");
            httpost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return httpost;
    }
    
}

转载于:https://my.oschina.net/u/1430510/blog/298623

你可能感兴趣的文章
模块化Javascript代码的两种方式
查看>>
Money去哪了- 每日站立会议
查看>>
Python数据结构和算法学习笔记1
查看>>
正则之从dom字符串中提取url
查看>>
大数据——基础概念
查看>>
第六次上机实验
查看>>
机器学习温和指南
查看>>
解决Geoserver请求跨域的几种思路,第二种思路用过
查看>>
最短路-Bellman-Ford算法
查看>>
Object 类有哪些方法
查看>>
oracle 将一个表复制到另外一个表里 .
查看>>
libcurl以get方式请求服务器端文件
查看>>
OpenJudge 2786 Pell数列
查看>>
mysql 游标循环,嵌套游标循环
查看>>
win7 蛋疼的时间格式转化
查看>>
C++中二维数组的动态创建与处理
查看>>
SPOJ 10628 COT - Count on a tree(在树上建立主席树)(LCA)
查看>>
SpringInAction--Bean参数的自动注入
查看>>
素数筛
查看>>
centos /linux 修改目录或文件权限
查看>>