java调用接口方法:
package com.lwl.api.provider.demo.test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class RestUtil {
public String load(String url,String query) throws Exception
{
URL restURL = new URL(url);
HttpURLConnection conn = (HttpURLConnection) restURL.openConnection();
//请求方式
conn.setRequestMethod("POST");
//设置是否从httpUrlConnection读入,默认情况下是true; httpUrlConnection.setDoInput(true);
conn.setDoOutput(true);
//allowUserInteraction 如果为 true,则在允许用户交互(例如弹出一个验证对话框)的上下文中对此 URL 进行检查。
conn.setAllowUserInteraction(false);
PrintStream ps = new PrintStream(conn.getOutputStream());
ps.print(query);
ps.close();
BufferedReader bReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line,resultStr="";
while(null != (line=bReader.readLine()))
{
resultStr +=line;
}
System.out.println("接口调用数据:"+resultStr);
bReader.close();
return resultStr;
}
public static void main(String []args) {try {
RestUtil restUtil = new RestUtil();
String resultString = restUtil.load(
"http://192.168.10.89:8080/eoffice-restful/resources/sys/oaholiday",
"floor=first&year=2017&month=9&isLeader=N");
} catch (Exception e) {
System.out.print(e.getMessage());
}
}
}
首先URL restURL = new URL(url);这其中的url就是需要调的目标接口地址,URL类是java.net.*下的类,这个不陌生。
setRequestMethod("POST");请求方式是有两个值进行选择,一个是GET,一个是POST,选择对应的请求方式
setDoOutput(true);setDoInput(true);
setDoInput() : // 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true, 默认是false;
setDoOutput(): // 设置是否从httpUrlConnection读入,默认情况下是true;
setAllowUserInteraction();allowUserInteraction 如果为 true,则在允许用户交互(例如弹出一个验证对话框)的上下文中对此 URL 进行检查。
下面代码的query是以 属性=值 传输的,若是多个则是 属性=值&属性=值 这种形式传递的,传递给服务器,让服务器自己去处理。
如何去生成这种形式的呢?最简单最快的方式在这里 Java将Map拼接成“参数=值&参数=值”
close();创建流进行写入或读取返回值,创建用完后记得关闭流。
更多java知识请关注java基础教程栏目。