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

HttpClient与HttpURLConnection的请求方式

程序员文章站 2022-03-03 09:39:11
...

HttpURLConnection是java的标准类,HttpURLConnection继承自URLConnection,可用于向指定网站发送GET请求、POST请求。

/**

* http post请求并接收返回的参数

* @param ur:请求的路径

* @param data:请求的参数

* @return

* @throws IOException

*/

public static String doPost(String url, String data) throws IOException {

URL getUrl = new URL(url);

//创建一个链接
HttpURLConnection conn = (HttpURLConnection) getUrl.openConnection();

//post请求必须设置这两个属性
//设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true, 默认情况下是false;《设置请求参数》
conn.setDoOutput(true);   

//设置是否从httpUrlConnection读入,默认情况下是true;《接收请求返回的数据》
conn.setDoInput(true);

//设置请求方式
conn.setRequestMethod("POST");

//设置是否使用缓存,post请求不能使用缓存
conn.setUseCaches(false);

//设置只作用于当前的实例
conn.setInstanceFollowRedirects(true);

//设置请求参数格式
conn.setRequestProperty("Content-Type", "text/xml");

//设置格式为utf-8,防止乱码
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("contentType", "utf-8");

//将请求参数转换为byte字节
byte[] byteData = data.getBytes("utf-8");

//打开连接
conn.connect();

//建立一个数据输出流
DataOutputStream out = new DataOutputStream(conn.getOutputStream());

//将请求参数写入流,刷新提交关闭流
out.write(byteData);

out.flush();

out.close();

//建立一个数据读取流,读取连接返回的数据
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));

StringBuilder result = new StringBuilder();

//循环读取返回的数据
String inputLine;

while ((inputLine = bufferedReader.readLine()) != null) {

result = result.append(inputLine);

}

bufferedReader.close();

conn.disconnect();

return result.toString();

}