程序如下:

添加apache相关maven依赖:

1        <dependency>
2 <groupId>org.apache.commons</groupId>
3 <artifactId>commons-lang3</artifactId>
4 <version>3.7</version>
5 </dependency>

POST请求如下:

  1 import com.alibaba.fastjson.JSONObject;
2 import org.apache.http.HttpEntity;
3 import org.apache.http.NameValuePair;
4 import org.apache.http.client.entity.UrlEncodedFormEntity;
5 import org.apache.http.client.methods.CloseableHttpResponse;
6 import org.apache.http.client.methods.HttpGet;
7 import org.apache.http.client.methods.HttpPost;
8 import org.apache.http.client.utils.URIBuilder;
9 import org.apache.http.entity.StringEntity;
10 import org.apache.http.impl.client.CloseableHttpClient;
11 import org.apache.http.impl.client.HttpClients;
12 import org.apache.http.message.BasicHeader;
13 import org.apache.http.message.BasicNameValuePair;
14 import org.apache.http.util.EntityUtils;
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
17 import java.util.ArrayList;
18 import java.util.List;
19
20 /**
21 * HttpClient发送POST请求
22 */
23 public class HttpClientService {
24
25
26 /**
27 * 发送POST请求
28 * @param url
29 * @param map集合
30 * @return JSON
31 * @throws Exception
32 */
33 public static Object sendPost(String url, Map<String, String> map) throws Exception{
34 JSONObject jsonObject = null;
35 CloseableHttpClient client = null;
36 CloseableHttpResponse response = null;
37 try{
38 /**
39 * 创建一个httpclient对象
40 */
41 client = HttpClients.createDefault();
42 /**
43 * 创建一个post对象
44 */
45 HttpPost post = new HttpPost(url);
46
47 JSONObject jsonParam = new JSONObject();
48 Set<String> set = map.keySet();
49 for (String str : set) {//将Map转换成JSONObject
50 jsonParam.put(str, map.get(str));
51 }
52 JSONArray jsonArray = new JSONArray();
53 jsonArray.add(jsonParam);//将JSONObject转换成JSONArray入参
54
55 /**
56 * 设置上传byte[]数组文件流
57 builder.addBinaryBody("data", byteOutStream.toByteArray(), ContentType.MULTIPART_FORM_DATA, "AudioFile.wav");
58 HttpEntity entity = builder.build();
59 */
60
61 /**
62 * 设置上传单一对象
63 */
64 StringEntity entity = new StringEntity(jsonArray.toString(), "utf-8");
65
66 /**
67 * 设置请求的内容
68 */
69 post.setEntity(entity);
70 /**
71 * 设置请求的报文头部的编码
72 */
73 post.setHeader(new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"));
74 /**
75 * 设置请求的报文头部的编码
76 */
77 post.setHeader(new BasicHeader("Accept", "text/plain;charset=utf-8"));
78 /**
79 * 执行post请求
80 */
81 response = client.execute(post);
82 /**
83 * 获取响应码
84 */
85 int statusCode = response.getStatusLine().getStatusCode();
86 if (200 == statusCode){
87 /**
88 * 通过EntityUitls获取返回内容
89 */
90 String result = EntityUtils.toString(response.getEntity(),"UTF-8");
91 /**
92 * 转换成json,根据合法性返回json或者字符串
93 */
94 try{
95 jsonObject = JSONObject.parseObject(result);
96 return jsonObject;
97 }catch (Exception e){
98 return result;
99 }
100 }else{
101 LOGGER.error("HttpClientService-line: {}, errorMsg:{}", 146, "POST请求失败!");
102 }
103 }catch (Exception e){
104 LOGGER.error("HttpClientService-line: {}, Exception:{}", 149, e);
105 }finally {
106 response.close();
107 client.close();
108 }
109 return null;
110 }
111
112 }

GET请求如下:

 1 import com.alibaba.fastjson.JSONObject;
2 import org.apache.http.HttpEntity;
3 import org.apache.http.NameValuePair;
4 import org.apache.http.client.entity.UrlEncodedFormEntity;
5 import org.apache.http.client.methods.CloseableHttpResponse;
6 import org.apache.http.client.methods.HttpGet;
7 import org.apache.http.client.methods.HttpPost;
8 import org.apache.http.client.utils.URIBuilder;
9 import org.apache.http.entity.StringEntity;
10 import org.apache.http.impl.client.CloseableHttpClient;
11 import org.apache.http.impl.client.HttpClients;
12 import org.apache.http.message.BasicHeader;
13 import org.apache.http.message.BasicNameValuePair;
14 import org.apache.http.util.EntityUtils;
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
17 import java.util.ArrayList;
18 import java.util.List;
19
20 /**
21 * HttpClient发送GET请求
22 */
23 public class HttpClientService {
24
25
26 /**
27 * 发送GET请求
28 * @param url请求url
29 * @param name请求参数
30 * @return JSON
31 * @throws Exception
32 */
33 public static Object sendGet(String url,String name) throws Exception{
34 JSONObject jsonObject = null;
35 CloseableHttpClient client = null;
36 CloseableHttpResponse response = null;
37 try{
38 /**
39 * 创建HttpClient对象
40 */
41 client = HttpClients.createDefault();
42 /**
43 * 创建URIBuilder
44 */
45 URIBuilder uriBuilder = new URIBuilder(url);
46
47 /**
48 * 设置参数
49 */
50 uriBuilder.addParameters(name);
51 /**
52 * 创建HttpGet
53 */
54 HttpGet httpGet = new HttpGet(uriBuilder.build());
55 /**
56 * 设置请求头部编码
57 */
58 httpGet.setHeader(new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"));
59 /**
60 * 请求服务
61 */
62 response = client.execute(httpGet);
63 /**
64 * 获取响应吗
65 */
66 int statusCode = response.getStatusLine().getStatusCode();
67
68 if (200 == statusCode){
69 /**
70 * 获取返回对象
71 */
72 HttpEntity entity = response.getEntity();
73 /**
74 * 通过EntityUitls获取返回内容
75 */
76 String result = EntityUtils.toString(entity,"UTF-8");
77 /**
78 * 转换成json,根据合法性返回json或者字符串
79 */
80 try{
81 jsonObject = JSONObject.parseObject(result);
82 return jsonObject;
83 }catch (Exception e){
84 return result;
85 }
86 }else{
87 LOGGER.error("HttpClientService-line: {}, errorMsg{}", 97, "GET请求失败!");
88 }
89 }catch (Exception e){
90 LOGGER.error("HttpClientService-line: {}, Exception: {}", 100, e);
91 } finally {
92 response.close();
93 client.close();
94 }
95 return null;
96 }
97
98 }

文章参考:

参考链接一参考链接二参考链接三

总语:

我是南国以南i记录点滴每天成长一点点,学习是永无止境的!转载请附原文链接!!!

一文告诉你如何使用java调用http接口的更多相关文章

  1. Java 调用http接口(基于OkHttp的Http工具类方法示例)

    目录 Java 调用http接口(基于OkHttp的Http工具类方法示例) OkHttp3 MAVEN依赖 Http get操作示例 Http Post操作示例 Http 超时控制 工具类示例 Ja ...

  2. Java调用webservice接口方法

                             java调用webservice接口   webservice的 发布一般都是使用WSDL(web service descriptive langu ...

  3. (二)通过JAVA调用SAP接口 (增加一二级参数)

    (二)通过JAVA调用SAP接口 (增加一二级参数) 一.建立sap连接 请参考我的上一篇博客 JAVA连接SAP 二.测试项目环境准备 在上一篇操作下已经建好的环境后,在上面的基础上新增类即可 三. ...

  4. Java调用RestFul接口

    使用Java调用RestFul接口,以POST请求为例,以下提供几种方法: 一.通过HttpURLConnection调用 1 public String postRequest(String url ...

  5. [Java] java调用wsdl接口

    前提: ① 已经提供了一个wsdl接口 ② 该接口能正常调用 步骤1:使用cxf的wsdl2java工具生成本地类 下载CXF:http://cxf.apache.org/download.html ...

  6. Java调用第三方接口工具类(json、form)

    1.JSON值访问 /** * 调用对方接口方法 * @param path 对方或第三方提供的路径 * @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析 ...

  7. java 调用webservice接口wsdl,推荐使用wsdl2java,放弃wsimport

    网上说wsimport是jdk1.6后自带的客户端生成调用webservice接口的工具,其实我挺喜欢原生的东西,毕竟自家的东西用着应该最顺手啊,但往往让人惊艳的是那些集成工具. 本机jdk1.8.1 ...

  8. Java调用第三方接口示范

    在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口. 使用流程[1]准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的res ...

  9. 三种方法实现java调用Restful接口

    1,基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...

  10. Java 调用 php接口(Ajax)(二)

    由于项目里面需要用到Java调用PHP的充值接口,所以学习了一下,以下这个Demo是个小小的例子,写下来做个笔记> jsp页面: <%@ page language="java& ...

随机推荐

  1. 【ACM专项练习#01】基本输入输出,如何加减

    关于ACM,牛客其实也有专门的模拟练习:https://ac.nowcoder.com/acm/contest/5657#question 做这个也可以 关于while(cin>>n) 在 ...

  2. Jmeter如何分布式执行脚本?

    Jmeter分布式执行原理: JMeter分布式执行时,选择其中一台作为调度机(master),其他机器作为执行机(slave): master会在本地编辑好jmx压测脚本,执行时,master将jm ...

  3. Rust 开发的高性能 Python 包管理工具,可替换 pip、pip-tools 和 virtualenv

    最近,我在 Python 潮流周刊 中分享了一个超级火爆的项目,这还不到一个月,它在 Github 上已经拿下了 8K star 的亮眼成绩,可见其受欢迎程度极高!国内还未见有更多消息,我趁着周末把一 ...

  4. SpringCloud Hystrix断路器的基本使用

    官网资料: https://github.com/Netflix/Hystrix/wiki/How-To-Use 1. 服务雪崩 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系, ...

  5. iview viewdesign 里面的Select 输入添加 query不能从新为空 @on-create 解决方案 v-if 从新刷一遍

    iview viewdesign 里面的Select 输入添加 query不能从新为空 @on-create 解决方案 v-if 从新刷一遍

  6. windows10 中为文件添加让自己可以使用查看、修改、运行的权限

    在Win10中添加权限的方法 前一段时间重装了系统,然后,突然间就因为权限原因没法查看一些文件了.所以就想办法添加权限.尝试很多次后终于成功了,这篇文章记录一下如何为自己添加权限. 选中需要添加权限的 ...

  7. python文件获取并读取固定长度数据实例解析

    一 概念 1 file 操作: 文件操作一般有open,write,read,close几种,这里重点是read固定长度数据. read() 用于从文件读取指定的字节数,如果未给定或为负则读取所有. ...

  8. Linux IPC(进程间通信)摘要(信号灯,共享内存,消息队列,管道)(一)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  9. 记录--两行CSS让页面提升了近7倍渲染性能

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 对于前端人员来讲,最令人头疼的应该就是页面性能了,当用户在访问一个页面时,总是希望它能够快速呈现在眼前并且是可交互状态.如果页面加载 ...

  10. 并发CPU伪共享及优化

    伪共享 缓存系统中是以缓存行(cache line)为单位存储的.缓存行是2的整数幂个连续字节,一般为32-256个字节.最常见的缓存行大小是64个字节.当多线程修改互相独立的变量时,如果这些变量共享 ...