网上的调用方法实例千奇百怪,以下为本人自己整理的Java调用rest接口方法实例,包含get请求和post请求,可创建工具类方便调用,其中get、post请求解决了入出参中文乱码问题。
get方式请求
//get方式请求 public String restCallerGet(String path, String param) { //path 接口路径 xxx/xxx/xxx //param 入参 ?xxx=x&xxx=x&xxx=x //接口ip String httpip = "http://127.0.0.1:8080"; String data = ""; //url拼接 String lasturl = httpip + path + param; try{ URL url = new URL(lasturl); //打开和url之间的连接 HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); //请求头 urlConn.setRequestProperty("Accept-Charset", "utf-8"); urlConn.setRequestProperty("Content-Type", "application/json; charset=utf-8"); urlConn.setDoOutput(true); urlConn.setDoInput(true); urlConn.setRequestMethod("GET");//GET和POST必须全大写 urlConn.connect(); int code = urlConn.getResponseCode();//获得响应码 if(code == 200) {//响应成功,获得响应的数据 //InputStream is = urlConn.getInputStream();//得到数据流(输入流) //byte[] buffer = new byte[1024]; //int length = 0; //while ((length = is.read(buffer)) != -1) { // String res = new String(buffer, 0, length); // data += res; //} //System.out.println(data); //解决中文乱码 BufferedReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream(),"UTF-8")); data = reader.readLine(); } urlConn.disconnect(); //断开连接 }catch (Exception e) { e.printStackTrace(); } return data; }
post方式请求
//post方式请求 public String restCallerPost(String path, String param) { //path 接口路径 xxx/xxx/xxx //param 入参json {} //接口ip String httpip = "http://127.0.0.1:8080"; int responseCode; //String urlParam = "?aaa=1&bbb=2"; String urlParam = ""; String data = ""; //url拼接 String lasturl = httpip + path + urlParam; try { URL restURL = new URL(lasturl); HttpURLConnection conn = (HttpURLConnection) restURL.openConnection(); conn.setRequestMethod("POST"); //请求头 conn.setRequestProperty("Content-Type", "application/json; charset=utf-8"); conn.setDoOutput(true); //输入流 //OutputStream os = conn.getOutputStream(); //解决中文乱码 OutputStreamWriter os = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); os.write(param); os.flush(); // 输出response code responseCode = conn.getResponseCode(); // 输出response if(responseCode == 200){ //输出流 //BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); //解决中文乱码 BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8")); data = reader.readLine(); } else { data = "false"; } // 断开连接 os.close(); conn.disconnect(); } catch (Exception e) { e.printStackTrace(); } return data; }
main方法调用测试
public static void main(String[] args) { // TODO Auto-generated method stub //接口路径 String pathGet = "/xxx/xxx/getFunction"; String pathPost = "/xxx/xxx/postFunction"; //get String paramGet = "?aaa=1&bbb=2"; //RestCallerUtil为自行封装的工具类 RestCallerUtil rcuGet = new RestCallerUtil(); String resultDataGet = rcuGet.restCallerGet(pathGet, paramGet); System.out.println(resultDataGet); //post String paramPost = "{'aaa':'1','bbb':'2'}"; //RestCallerUtil为自行封装的工具类 RestCallerUtil rcuPost = new RestCallerUtil(); String resultDataPost = rcuPost.restCallerPost(pathPost, paramPost); System.out.println(resultDataPost); }
热门文章
- 「12月6日」最高速度19M/S,2024年Clash Nyanpasu每天更新免费节点订阅链接
- 狗粮颗粒机最好产品排名前十(狗粮颗粒怎么做的)
- 适合养猫的生肖(适合养猫的生肖有哪些)
- Java-多线程-线程安全-同步代码块
- 农大动物医院有夜间急诊吗多少钱啊(农大动物医院急诊电话)
- 动物医院连锁店有哪些名字(动物医院有限公司)
- 领养协议书范本2019版本下载(领养协议书范本图片)
- 流浪狗领养平台(流浪狗领养平台电话)
- 「11月30日」最高速度21.7M/S,2024年Clash Nyanpasu每天更新免费节点订阅链接
- 「11月7日」最高速度20.9M/S,2024年Clash Nyanpasu每天更新免费节点订阅链接