HTTP协议、HTTPCline介绍
发布时间
阅读量:
阅读量
HTTP和大数据
正常访问网站时, window系统会通过host文件查找对应域名的服务器IP地址.无需再次从DNS服务器解析出对应的IP地址;
HTTP协议:超文本传输协议。终端和服务器通信

物理层:网线、网卡
网络层:IP协议
传输层:建立连接-----TCP(安全、可靠)/UDP
应用层:DNS FTP SMTP
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class Http通信 {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket();
server.bind(new InetSocketAddress(8888));
System.out.println("开始监听啦,我就在这监听,有动静我就告诉你哦");
Socket accept = server.accept();
System.out.println("收到了某些信息,我读出来了,你看一下哦,哈哈");
InputStream inputStream = accept.getInputStream();
byte[] buffer = new byte[2048];
int len = inputStream.read(buffer);
System.out.println(new String(buffer,0,len));
}
}
开始监听啦
收到了某些信息。哈哈
GET / HTTP/1.1 --------------------请求行
Host: localhost:8888 --------------请求头
Connection: keep-alive ---
Cache-Control: max-age=0---
Upgrade-Insecure-Requests: 1---
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36 Edg/83.0.478.37
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6--------请求头结束
17. name=XX ------空一行 请求体
HttpClient
大部分项目接口是Http请求,数据格式是JSON格式。HttpClient 主要功能
(1)支持所有 HTTP 方法(包括 GET、POST、PUT 和 DELETE 等)
(2)能够实现自动重定向
(3)能够使用 https 协议
(4)能够处理代理服务器等效功能
**HttpPost****HttpDelete****HttpPut****HttpGet**
基础依赖-HTTPCline和fastjson
1、HTTPClient-Get请求
package com.leo.controller;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
public class HttpGetTest {
public static void main(String[] args) throws IOException {
//1.打开浏览器
CloseableHttpClient httpClient = HttpClients.createDefault();
//2.声明get请求
HttpGet httpGet = new HttpGet("http://www.baidu.com/s?wd=java");
//3.发送请求
CloseableHttpResponse response = httpClient.execute(httpGet);
//4.判断状态码
if(response.getStatusLine().getStatusCode()==200){
HttpEntity entity = response.getEntity();
//使用工具类EntityUtils,从响应中取出实体表示的内容并转换成字符串
String string = EntityUtils.toString(entity, "utf-8");
System.out.println(string);
}
//5.关闭资源
response.close();
httpClient.close();
}
}
2,HTTPCline---Post请求
package com.leo.controller;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
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.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class HttpPostTest {
public static void main(String[] args) throws IOException {
//1.打开浏览器
CloseableHttpClient httpClient = HttpClients.createDefault();
//2.声明get请求
HttpPost httpPost = new HttpPost("https://www.oschina.net/");
//3.开源中国为了安全,防止恶意攻击,在post请求中都限制了浏览器才能访问
httpPost.addHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36");
//4.判断状态码
List<NameValuePair> parameters = new ArrayList<NameValuePair>(0);
parameters.add(new BasicNameValuePair("scope", "project"));
parameters.add(new BasicNameValuePair("q", "java"));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters,"UTF-8");
httpPost.setEntity(formEntity);
//5.发送请求
CloseableHttpResponse response = httpClient.execute(httpPost);
if(response.getStatusLine().getStatusCode()==200){
HttpEntity entity = response.getEntity();
String string = EntityUtils.toString(entity, "utf-8");
System.out.println(string);
}
//6.关闭资源
response.close();
httpClient.close();
}
}
全部评论 (0)
还没有任何评论哟~
