当前位置:   article > 正文

get请求和post请求的区别_Java实现通用的Get和Post请求组件

java中get请求和post请求的区别

开发中经常遇到发送一个远程请求并解析返回结果的情况,那可以在项目中写一个Get/Post的组件,以后遇到远程请求直接调用即可

实现步骤为:

1.创建一个URL(java.net.URL)对象

80f8af2e792ac1c9f0302ee10f907d4d.png

2.打开url之间的连接

2b783b8681c2eba2e17311c408b5995a.png

3.设置通用请求属性

89117b97d800986595a6915c5de9e84c.png

(user-agent即用户代理,简称UA,是头域的组成部分)

4.建立实际连接

36e5847cca4545df550009a1fbc9163a.png

5.获取响应头字段集合

17130c9a0a31edbfb0181439acc43a74.png

6.把Get请求的响应头打印出来看看

266914cae6929e47bac8fff05a91466b.png

7.定义BufferedReader输入流来读取URL的响应

60b0d5d866b3b52c4244c977977ad658.png

8.关闭输入流

983cd0c1192686960359c90fda45cc03.png

post请求步骤和上面的基本一致,但需要设置

7a94f0724caf2afd6f166fb6913aef6c.png

这两个字段是什么作用呢?看看源码,post请求参数不像get那样拼接在url之后,而是放在http正文内

63819d1d8c04f760bfe9730d5474bc11.png

还需要定义BufferedReader输入流来读取URL的响应

457eebbc1c1ed3e16990d593ce6554de.png

因为初始话URL和设置公共header属性这块代码一样,可以把公共部分的方法封装成一个通用方法

c2fc6c089bac2fe049ab5c35717a2db8.png

然后再写两个模拟方法

84d83baedfd84526ed614faf0694053c.png

设置server.port端口为8989,然后启动项目

最后写两个模拟请求方法

1dff2439080a07ad28c7d5eab8667844.png

输出如下

getMap:{null=[HTTP/1.1 200], Content-Length=[32], Date=[Thu, 21 Feb 2019 07:56:16 GMT], Content-Type=[text/plain;charset=UTF-8]}

null:[HTTP/1.1 200]

Content-Length:[32]

Date:[Thu, 21 Feb 2019 07:56:16 GMT]

Content-Type:[text/plain;charset=UTF-8]

getResponse:username:winson,password:1234567

postResponse:username:winson,password:1234567

完整代码如下:

HttpRequest.Java

public class HttpRequest {

/**

* GET方法

*

* @param url 请求URL

* @param reqParam 请求参数 参数形式为 p1=value1&p2=vlaue2

* @return Response 远程资源的响应结果

*/

private static StringBuilder getRequest(String url, String reqParam) {

BufferedReader in = null;

String readLine;

StringBuilder result = new StringBuilder();

try {

String urlWithParam = url + "?" + reqParam;

URLConnection urlConnection = getUrlConnection(urlWithParam); // 打开和URL之间的连接

if (urlConnection != null) { // 建立实际的连接

urlConnection.connect();

Map> map = urlConnection.getHeaderFields(); // 获取所有响应头字段

System.out.println("map:" + map);

for (String key : map.keySet()) { // 遍历输出响应头字段

System.out.println(key + ":" + map.get(key));

}

// 定义 BufferedReader输入流来读取URL的响应

in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

while ((readLine = in.readLine()) != null) {

result.append(readLine);

}

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (in != null) {

in.close(); // 关闭输入流

}

} catch (IOException ioe) {

ioe.printStackTrace();

}

}

return result;

}

/**

* POST方法

*

* @param url 请求URL

* @param reqParam 请求参数 参数形式: p1=value1&p2=vlaue2

* @return 远程资源的响应结果

*/

private static StringBuilder postRquest(String url, String reqParam) {

PrintWriter printWriter = null;

BufferedReader bufferedReader = null;

StringBuilder result = new StringBuilder();

try {

URLConnection urlConnection = getUrlConnection(url);

if (urlConnection == null) { // 获取URLConnection对象对应的输出流

return null;

}

// POST请求需要设置如下两行

urlConnection.setDoInput(true); //读取连接请求

urlConnection.setDoOutput(true); //设置是否向connection输出,post请求参数要放在http正文内

urlConnection.setUseCaches(false); //POST请求不能使用缓存

printWriter = new PrintWriter(urlConnection.getOutputStream());

printWriter.print(reqParam); // 发送请求参数

printWriter.flush(); // flush输出流的缓冲

bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); // 定义BufferedReader输入流来读取URL的响应

String readLine;

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

result.append(readLine);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (printWriter != null) {

printWriter.close(); //关闭输出流

}

if (bufferedReader != null) {

bufferedReader.close(); //输入流

}

} catch (IOException ioe) {

ioe.printStackTrace();

}

}

return result;

}

private static URLConnection getUrlConnection(String url) {

try {

URL urlObject = new URL(url);

// 打开和URL之间的连接

URLConnection urlConnection = urlObject.openConnection();

// 设置通用请求属性

urlConnection.setRequestProperty("accept

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/490428
推荐阅读
相关标签
  

闽ICP备14008679号