前言:

网络API接口:https://api.apiopen.top/searchMusic

此API接口返回类型为JSON格式类型

GET:从指定资源请求数据

POST:向指定资源提交要被处理的数据

GET与POST的区别:

①GET在浏览器回退时是无害的,而POST会再次提交请求。

②GET只支持URL编码。

③GET参数通过URL传递,参数直接暴露在URL中会泄露信息,POST通过Request body传递不会有这样的问题。

④GET请求在URL中传递参数有长度限制,POST没有长度限制。

⑤对POST请求会险发送Header,服务器相应成功,在发送Date,服务器再次响应,需响应两次。GET会把Header与Date一起发送到服务端,服务器只响应一次。

一、POST方法

创建POST方法类

 package com.HttpClient.Test;

 import java.io.IOException;
import java.util.ArrayList; import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils; import com.HttpClient.jiexi.HttpClient_jiexi; public class HttpClient_post { private String entityStr;
HttpClient_jiexi JSONTOOL = new HttpClient_jiexi(); //封装POST方法
public String post(String POST_URL,ArrayList<NameValuePair> list) { try {
//把参数放入请求体中
UrlEncodedFormEntity entityParam = new UrlEncodedFormEntity(list, "UTF-8");
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(POST_URL);
httpPost.setEntity(entityParam);
//发起请求
CloseableHttpResponse response = httpClient.execute(httpPost);
//获取返回状态,并判断是否连接成功。
if (response.getStatusLine().getStatusCode()==200) {
System.out.println("连接成功");
} else {
System.out.println("连接异常");
}
// 获得响应的实体对象
HttpEntity entity = response.getEntity(); //转换成字符串
entityStr = EntityUtils.toString(entity, "UTF-8");
//关闭请求
httpClient.close(); } catch (ClientProtocolException e) {
System.err.println("Http协议异常");
e.printStackTrace();
} catch (IOException e) {
System.err.println("IO异常");
e.printStackTrace();
}
return entityStr;
} }

调用POST方法类

 package com.HttpClient.Test;

 import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.testng.annotations.Test; public class HttpClient_case1 { HttpClient_post post = new HttpClient_post();
private String POST_URL = "https://api.apiopen.top/searchMusic";
private String entity;
private ArrayList<NameValuePair> list; @Test
public void test1() {
// 构造list集合,并添加参数
BasicNameValuePair basicNameValuePair = new BasicNameValuePair("name", "十年");
list = new ArrayList<>();
list.add(basicNameValuePair);
// 执行请求,需要传入URL与参数
entity = post.post(POST_URL,list);
System.out.println(entity);
} }

二、GET方法

创建GET方法类

package com.HttpClient.Test;

import java.io.IOException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils; public class HttpClient_get { public String entityStr ;
public CloseableHttpResponse response ; public String get(String GET_URL,ArrayList<NameValuePair> list) throws URISyntaxException{try {
CloseableHttpClient httpClient = HttpClients.createDefault();
URIBuilder uriBuilder = new URIBuilder(GET_URL);
uriBuilder.setParameters(list);
//根据带参数的URI对象构建GET请求对象
HttpGet httpGet = new HttpGet(uriBuilder.build());
//执行请求
response = httpClient.execute(httpGet);
//获得响应的实体对象
HttpEntity entity = response.getEntity();
//转换成字符串
entityStr = EntityUtils.toString(entity, "UTF-8"); //关闭请求
httpClient.close();
} catch (ClientProtocolException e) {
System.err.println("Http协议异常");
e.printStackTrace();
} catch (IOException e) {
System.err.println("IO异常");
e.printStackTrace();
}
return entityStr; } }

调用GET方法类

package com.HttpClient.Test;

import java.net.URISyntaxException;
import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.testng.annotations.Test; public class HttpClient_case1 { HttpClient_get get = new HttpClient_get();
private String URL = "https://api.apiopen.top/searchMusic";
private String entity;
private ArrayList<NameValuePair> list; @Test
public void test1() throws URISyntaxException {
// 构造list集合
BasicNameValuePair basicNameValuePair = new BasicNameValuePair("name", "十年");
list = new ArrayList<>();
list.add(basicNameValuePair);
// 执行请求,需要传入URL与参数
entity = get.get(URL, list);
System.out.println(entity); } }

HttpClient POST/SET方法的更多相关文章

  1. UWP 使用Windows.Web.Http命名空间下的HttpClient使用post方法,上传图片服务器

    1.从相册里面选取图片 /// <summary> /// 1.1 从相册里面选取图片 /// </summary> /// <param name="send ...

  2. Android 6.0 SDK 找不到HttpClient的解决方法

    一.情况描述 在eclipse或Android Studio开发时(笔者目前只用过Android Studio),设置Android SDK的编译版本为23时,且使用了httpClient相关类的库项 ...

  3. Android HttpClient基本使用方法

    GET 方式 //先将参数放入List,再对参数进行URL编码 List<BasicNameValuePair> params = new LinkedList<BasicNameV ...

  4. HttpClient的使用方法

    使用httpClient发送请求.接收响应很简单.一般需要以下几个步骤. 第一:创建HttpClient对象: 第二:创建请求方法的实例,并指定请求URL.如果要发送GET请求,创建HttpGet对象 ...

  5. HttpClient 模拟发送Post和Get请求 并用fastjson对返回json字符串数据解析,和HttpClient一些参数方法的deprecated(弃用)的综合总结

    最近在做一个接口调用的时候用到Apache的httpclient时候,发现引入最新版本4.5,DefaultHttpClient等老版本常用的类已经过时了,不推荐使用了:去官网看了一下在4.3之后就抛 ...

  6. httpClient的post方法使用form格式数据调用接口

    Http使用post调用接口,接口只接受form表单数据格式问题? 这个问题的关键是form表单提交的是数据格式是什么样子的,使用httpClient工具类时Header信息如何写. 会影响解决问题思 ...

  7. Apache httpclient的execute方法调试

    因为工作需要,想研究一下execute执行的逻辑. 在这一行调用execute: response = getHttpClient().execute(get); getHttpClient的实现: ...

  8. Httpclient 表单,json,multipart/form-data 提交 ---总结常用的方法

    最近在项目中,一直在使用HttpClient 中的方法,这里我进行一些方法的汇总,也是结合了一些大牛写的代码,以备不时之需 官话:HttpClient 是Apache Jakarta Common 下 ...

  9. .netcore 3.1高性能微服务架构:封装调用外部服务的接口方法--HttpClient客户端思路分析

    众所周知,微服务架构是由一众微服务组成,项目中调用其他微服务接口更是常见的操作.为了便于调用外部接口,我们的常用思路一般都是封装一个外部接口的客户端,使用时候直接调用相应的方法.webservice或 ...

随机推荐

  1. 又到了卸载Notepad++的时候了?

    逛开源中国(OSCHINA),无意中发现一贴<不用Notepad++,你还有这些更好的选择> 才发现,原来 Notepad++ 的作者侯今吾前几天又在 npp 的官网上发表了一篇个人政治意 ...

  2. Windows机器配置启动加载器的高级选项后,机器出现蓝屏,无法RDP

    问题描述: 虚拟机重启后出现蓝屏,需要排查原因 蓝屏界面如下: 排查结果: 1.Console发现机器停留在上述蓝屏界面,按F8后,机器可以正常启动并成功连接:但通过console再次重启后,又会进入 ...

  3. Rust 中的类型转换

    1. as 运算符 as 运算符有点像 C 中的强制类型转换,区别在于,它只能用于原始类型(i32 .i64 .f32 . f64 . u8 . u32 . char 等类型),并且它是安全的. 例 ...

  4. Centos6.5 忘记密码解决方法

    问题 原因  : 太久没用centos了  忘记密码了 很尴尬 快照也没说明密码.... 1.重启 centos 在开机启动的时候快速按键盘上的“E”键 或者“ESC”键(如果做不到精准快速可以在启动 ...

  5. 几种部署Goku API Gateway的方式,最快一分钟可使用上网关

    本文将介绍几种部署Goku API Gateway的方式,最快一分钟可使用上为网关,详情请看全文. 什么是Goku API Gateway? Goku API Gateway (中文名:悟空 API ...

  6. git .gitignore详解

    1.最近使用git又遇到一个陷阱: 场景:A和B使用的不同的编译器做的同一个解决方案下的不同的项目工程,刚开始没考虑到版本问题,后来发现A上传的csproj在B需要做很麻烦修改才能打开,后来想到各自用 ...

  7. C++学习笔记14_C#调用dll

    1. 首先C++创建dll项目,各种调第三方库,把这些东西都弄好后,整一个导出接口,例如: extern "C" __declspec(dllexport) int Add(int ...

  8. MATLAB基本使用及SIMULINK建模仿真实验

    MATLAB基本使用及SIMULINK建模仿真实验 这是我总结的操作方法: 1 )  M脚本文件的编写 1.新建M-file: 2.输入指令: 3.保存(注意:保存路径需要与工作路径一致) 2 )在S ...

  9. acm经验(转)

    先简单介绍一下自己: 高中在OI打过一段时间酱油,大一后暑假进入ACM集训队,到大三寒假,总共一年半的ACM生涯. 总共参加了四场比赛:区域赛一银(2013长春)一铜(2013杭州)一铁(2012金华 ...

  10. python——inspect模块

    inspect模块常用功能 import inspect # 导入inspect模块 inspect.isfunction(fn) # 检测fn是不是函数 inspect.isgenerator((x ...