欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java发送Http请求的一般步骤

程序员文章站 2024-03-04 09:58:23
...

Java发送Http请求的一般步骤

最近在使用百度地图和百度AI的开发API,经常需要发送http请求,在这里记录一下java发送Http请求的步骤。希望对大家有用。

了解Http报文结构

首先介绍Http协议的结构。请求报文和响应报文都是由以下部分组成:

  1. 起始行 (URL)
  2. 头部(Header)
  3. 主体 (Body)

根据需要在不同的地方添加数据。我通过百度文字识别的栗子来说明:(选取的例子是三个部分都要参数的例子,可以比较完整的展示http请求的结构)
Java发送Http请求的一般步骤

Java发送Http请求的一般步骤

请求代码

接下来看如何书写请求代码。(直接上代码)

URL url = new URL(address);
//打开连接(起始行)
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置请求方法 POST/GET等
conn.setRequestMethod("POST");
//设置通用的请求属性(头部)
conn.setRequestProperty("Content-Type", contentType);
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setUseCaches(false);
conn.setDoOutput(true);
conn.setDoInput(true);
//输出流对象(主体部分)
OutputStream os = conn.getOutputStream();
os.write(data.getBytes());
os.flush();
os.close();
//建立实际的连接
conn.connect();
//获取所有的响应头
Map<String, List<String>> headers = conn.getHeaderFields();
//获取响应内容
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while((line = br.readLine()) != null){
 sb.append(line);
}
br.close();

这是通用代码,注释已经写得比较明了。要说明的是:URL的参数是跟在URL地址的后面,就上面图片的例子,写一个完整的例子,如下:

public static String getResult(){
	String address = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"+
			"?access_token=你的access_token";
	URL url = new URL(address);
	//打开连接
	HttpURLConnection conn = (HttpURLConnection)url.openConnection();
	//设置请求方法
	conn.setRequestMethod("POST");
	//设置通用的请求属性
	conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
	conn.setRequestProperty("Connection", "Keep-Alive");
	conn.setUseCaches(false);
	conn.setDoOutput(true);
	conn.setDoInput(true);
	//输出流对象
	OutputStream os = conn.getOutputStream();
	String param = "image=" + imgData; //imgData需要按照要求的数据类型
	os.write(param.getBytes("UTF-8")); //采用utf-8编码方式
	os.flush();
	os.close();
	//建立实际的连接
	conn.connect();
	//获取响应内容
	BufferedReader br = new BufferedReader(new InputStreamReader
						(conn.getInputStream()));
	StringBuilder sb = new StringBuilder();
	String line;
	while((line = br.readLine()) != null){
		sb.append(line);
	}
	br.close();
	return sb.toString();
}	

这就是Http请求的模板了,老师再不用担心我不会写http的请求了。(另外关于百度部分api的使用会在另外的文章)
个人博客