什么是HTTP协议
以下博主写的十分清楚,认真阅读即可。在这里感谢大佬的总结(●’◡’●)
https://www.jianshu.com/p/7c8b4576e4bb
简述几条最基本使用
1.通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行,请求头部,空行和请求体4个部分构成。
2.在接收到请求之后,服务器经过解释之后,会返回个一个HTTP响应。HTTP响应是由四部分构成:状态行 响应头 空行 响应体。
以下是几个比较常用到的请求头,大家可以参照引用博主的详情信息打捞基础!
Accept:可接收的响应内容类型
Accept-Charset:可接收的字符集
Accept-Encoding:可接受的响应内容的编码方式 (http协议在传输时的加密方式,如果你的相应总是莫名其妙的乱码,你要对这个地方格外注意)
Content-Type:请求体的MIME类型
具体的代码
一些java中HttpClient的知识已在代码中体现,详情可以仔细阅读代码。
/**
* post请求(用于key-value格式的参数)
* @param url 请求连接
* @param maps 请求数据的集合
* @throws Exception
*/
public static void postClient(String url , Map<String,String> maps) throws Exception{
CloseableHttpClient httpClient = HttpClients.createDefault(); //创建一个可以关闭的Http链接
HttpPost post = new HttpPost(url); //这里使用Post方式提交
//以下是post提交的时候所包含的请求头
post.addHeader("Authorization", "basic {"+token+"}"); //token为认证所需,对接不同接口形式不同可能不需要
post.addHeader("Content-Type", "text/xml; charset=utf-8");
post.addHeader("Accept","application/xml");
//以下是请求时所要post提交的数据
ArrayList<NameValuePair> resbodyValue = new ArrayList<NameValuePair>();
for(Map.Entry<String, String> entry : maps.entrySet()){
String key = entry.getKey();
String value = entry.getValue();
resbodyValue.add(new BasicNameValuePair(key,value));
}
//post提交时有许多Entity,e.g:StringEntity,BasicHttpEntity,ByteArrayEntity等
post.setEntity(new UrlEncodedFormEntity(resbodyValue,"UTF-8"));
CloseableHttpResponse response = httpClient.execute(post);//发送请求
int status = response.getStatusLine().getStatusCode(); // 获取相应状态码
BufferedReader in = null;
if(status == 200){
//请求成功
in = new