100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > android post请求添加公共参数_Java实现通用的Get和Post请求组件

android post请求添加公共参数_Java实现通用的Get和Post请求组件

时间:2022-07-21 02:46:17

相关推荐

android post请求添加公共参数_Java实现通用的Get和Post请求组件

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

实现步骤为:

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

2.打开url之间的连接

3.设置通用请求属性

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

4.建立实际连接

5.获取响应头字段集合

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

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

8.关闭输入流

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

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

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

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

然后再写两个模拟方法

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

最后写两个模拟请求方法

输出如下

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

null:[HTTP/1.1 200]

Content-Length:[32]

Date:[Thu, 21 Feb 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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。