当前位置:   article > 正文

java使用restful接收数据,Java远程调用Restful API接口的Post和Get请求工具类

restfulpost表单提交java端接收

一、Post请求

1、使用Post请求时,需要传递两个参数,第一个是请求url,第二个参数是请求参数;返回值是一个string,可以直接接收返回的参数,也可以使用工具转换成map格式;

请求参数示例:String params = "systype=4&aa=123";

请求url示例:String requestUrl = "http://10.205.0.133:9991/service/getSysUseInfo";

2、代码示例

/**

* 向指定 URL 发送POST方法的请求

* @param url 发送请求的 URL

* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

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

*/

public static String sendPostHttpRequest(String url, String param) {

PrintWriter out = null;

BufferedReader in = null;

String result = "";

try {

URL realUrl = new URL(url);

// 打开和URL之间的连接

URLConnection conn = realUrl.openConnection();

// 设置通用的请求属性

conn.setRequestProperty("accept", "*/*");

conn.setRequestProperty("connection", "Keep-Alive");

conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

// 发送POST请求必须设置如下两行

conn.setDoOutput(true);

conn.setDoInput(true);

//1.获取URLConnection对象对应的输出流

out = new PrintWriter(conn.getOutputStream());

//2.中文有乱码的需要将PrintWriter改为如下

//out=new OutputStreamWriter(conn.getOutputStream(),"UTF-8")

// 发送请求参数

out.print(param);

// flush输出流的缓冲

out.flush();

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

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

String line;

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

result += line;

}

} catch (Exception e) {

System.out.println("发送 POST 请求出现异常!"+e);

e.printStackTrace();

}

//使用finally块来关闭输出流、输入流

finally{

try{

if(out!=null){

out.close();

}

if(in!=null){

in.close();

}

}

catch(IOException ex){

ex.printStackTrace();

}

}

return result;

}

3、请求完整示例,可使用main方法测试

// 接口地址

String requestUrl = "http://10.205.0.133:9991/service/getSysUseInfo";

String params = "systype=4&aa=123";

try {

String map = sendPostHttpRequest(requestUrl, params);

MapretMap = new HashMap();

retMap = JSONObject.fromObject(map);

System.out.println(retMap);

} catch (Exception e) {

e.printStackTrace();

}

二、Get请求

1、使用get请求时,第一个参数为请求url,第二个参数为请求参数;

请求参数示例:

Mapdatas = new HashMap<>();

datas.put("systype", 4);

datas.put("name", "lee");

请求url示例:

String requestUrl = "http://10.205.0.13:8888/IMP/api/rest/web/processJobWeb/singleStepProcessJob";

2、代码示例

/**

* java调用运程api公共方法

*

* @param requestUrl

* @param params

* @return

*/

@SuppressWarnings({ "unchecked", "rawtypes" })

static String httpRequest(String requestUrl, Map params) throws Exception {

// buffer用于接受返回的字符

StringBuffer buffer = new StringBuffer();

// 建立URL,把请求地址给补全,其中urlencode()方法用于把params里的参数给取出来

URL url = new URL(requestUrl + "?" + urlencode(params));

// 打开http连接

HttpURLConnection httpUrlConn = (HttpURLConnection) url

.openConnection();

httpUrlConn.setDoInput(true);

httpUrlConn.setRequestMethod("GET");

httpUrlConn.connect();

// 获得输入

InputStream inputStream = httpUrlConn.getInputStream();

InputStreamReader inputStreamReader = new InputStreamReader(

inputStream, "utf-8");

BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

// 将bufferReader的值给放到buffer里

String str = null;

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

buffer.append(str);

}

// 关闭bufferReader和输入流

bufferedReader.close();

inputStreamReader.close();

inputStream.close();

inputStream = null;

// 断开连接

httpUrlConn.disconnect();

// 返回字符串

return buffer.toString();

}

/**

* 请求参数拼接(组装)

* @param data

* @return

*/

@SuppressWarnings("rawtypes")

public static String urlencode(Mapdata) {

// 将map里的参数变成像 showapi_appid=###&showapi_sign=###&的样子

StringBuilder sb = new StringBuilder();

for (Map.Entry i : data.entrySet()) {

try {

sb.append(i.getKey()).append("=")

.append(URLEncoder.encode(i.getValue() + "", "UTF-8"))

.append("&");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

return sb.toString();

}

3、请求完整示例,可使用main方法测试

// 启动流程接口地址

String requestUrl = "http://10.205.0.13:8888/IMP/api/rest/web/processJobWeb/singleStepProcessJob";

Mapdatas = new HashMap<>();

datas.put("systype", 4);

datas.put("name", "lee");

// 启动流程返回的数据

String ret_parms = HttpRestUtil.httpRequest(requestUrl, datas);

MapretMap = new HashMap();

retMap = JSONObject.fromObject(ret_parms);

System.out.println(retMap);

三、完整示例工具类

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLConnection;

import java.net.URLEncoder;

import java.util.Map;

/**

* javay访问rest API工具类

*

* @author zhaohailong

*

*/

public class HttpRestUtil {

/**

* java调用运程api公共方法

*

* @param requestUrl

* @param params

* @return

*/

@SuppressWarnings({ "unchecked", "rawtypes" })

static String httpRequest(String requestUrl, Map params) throws Exception {

// buffer用于接受返回的字符

StringBuffer buffer = new StringBuffer();

// 建立URL,把请求地址给补全,其中urlencode()方法用于把params里的参数给取出来

URL url = new URL(requestUrl + "?" + urlencode(params));

// 打开http连接

HttpURLConnection httpUrlConn = (HttpURLConnection) url

.openConnection();

httpUrlConn.setDoInput(true);

httpUrlConn.setRequestMethod("GET");

httpUrlConn.connect();

// 获得输入

InputStream inputStream = httpUrlConn.getInputStream();

InputStreamReader inputStreamReader = new InputStreamReader(

inputStream, "utf-8");

BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

// 将bufferReader的值给放到buffer里

String str = null;

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

buffer.append(str);

}

// 关闭bufferReader和输入流

bufferedReader.close();

inputStreamReader.close();

inputStream.close();

inputStream = null;

// 断开连接

httpUrlConn.disconnect();

// 返回字符串

return buffer.toString();

}

/**

* 请求参数拼接(组装)

*

* @param data

* @return

*/

@SuppressWarnings("rawtypes")

public static String urlencode(Mapdata) {

// 将map里的参数变成像 showapi_appid=###&showapi_sign=###&的样子

StringBuilder sb = new StringBuilder();

for (Map.Entry i : data.entrySet()) {

try {

sb.append(i.getKey()).append("=")

.append(URLEncoder.encode(i.getValue() + "", "UTF-8"))

.append("&");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

return sb.toString();

}

/**

* 向指定 URL 发送POST方法的请求

*

* @param url

* 发送请求的 URL

* @param param

* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

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

*/

public static String sendPostHttpRequest(String url, String param) {

PrintWriter out = null;

BufferedReader in = null;

String result = "";

try {

URL realUrl = new URL(url);

// 打开和URL之间的连接

URLConnection conn = realUrl.openConnection();

// 设置通用的请求属性

conn.setRequestProperty("accept", "*/*");

conn.setRequestProperty("connection", "Keep-Alive");

conn.setRequestProperty("user-agent",

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

// 发送POST请求必须设置如下两行

conn.setDoOutput(true);

conn.setDoInput(true);

// 1.获取URLConnection对象对应的输出流

out = new PrintWriter(conn.getOutputStream());

// 2.中文有乱码的需要将PrintWriter改为如下

// out=new OutputStreamWriter(conn.getOutputStream(),"UTF-8")

// 发送请求参数

out.print(param);

// flush输出流的缓冲

out.flush();

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

in = new BufferedReader(

new InputStreamReader(conn.getInputStream()));

String line;

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

result += line;

}

} catch (Exception e) {

System.out.println("发送 POST 请求出现异常!" + e);

e.printStackTrace();

}

// 使用finally块来关闭输出流、输入流

finally {

try {

if (out != null) {

out.close();

}

if (in != null) {

in.close();

}

} catch (IOException ex) {

ex.printStackTrace();

}

}

return result;

}

// 测试是否有效

public static void main(String[] args) {

// 接口地址

String requestUrl = "http://10.205.0.133:9991/service/getSysUseInfo";

String params = "systype=4&aa=123";

try {

String map = sendPostHttpRequest(requestUrl, params);

System.out.println(map);

} catch (Exception e) {

e.printStackTrace();

}

// System.out.println(result("你好啊"));

}

}

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

闽ICP备14008679号