[适用工具类 / 方法] - Java中通过HttpClient进行http接口调用请求 【难度 ★】
[实用工具类 / 方法] -- Java中通过HttpClient进行http接口调用请求 【难度 ★★★】
在自己开发的Java后台系统中,经常需要用到第三方的Http接口调用或者为解决跨域的http接口请求时,先用自己的Java后端服务调用远端的接口,获取到数据后,然后再给自己系统的前端进行Ajax调用。这里的关键技术就是Java对Http接口的访问,一般如果只是简单的运用,我们可以使用HttpClient辅助开发。
对于Maven架构的项目可以通过pom.xml文件中,加入以下内容:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
如果是自行建立的Java Web项目,则需要引入相关的HttpClient的jar包,可以前往Apache官网的Http组件页download:
http://hc.apache.org/downloads.cgi
或者使用清华大学的镜像文件:
http://mirrors.tuna.tsinghua.edu.cn/apache//httpcomponents/httpclient/binary/httpcomponents-client-4.5.3-bin.zip
在项目中加入了这些Jar包之后,就可以使用HttpClient了。
参考代码如下:
public class HttpClientUtil {
public static String server_addr = "http://localhost:8080/Server-api-simulator";
public static boolean notifyServerJobStateChanged(String jobName, String jobGroup, String state, String triggerIds){
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(server_addr + "/UpdateReqJobStateSvlt");
System.out.println(server_addr + "/UpdateReqJobStateSvlt");
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("jobName", jobName));
nvps.add(new BasicNameValuePair("jobGroup", jobGroup));
nvps.add(new BasicNameValuePair("state", state));
nvps.add(new BasicNameValuePair("triggerIds", ""));
try {
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
httpclient.execute(httpPost);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
public static void main(String[] args){
notifyServerJobStateChanged("AAA", "BBB", "WAITING", "");
}
}
在自己开发的Java后台系统中,经常需要用到第三方的Http接口调用或者为解决跨域的http接口请求时,先用自己的Java后端服务调用远端的接口,获取到数据后,然后再给自己系统的前端进行Ajax调用。这里的关键技术就是Java对Http接口的访问,一般如果只是简单的运用,我们可以使用HttpClient辅助开发。
对于Maven架构的项目可以通过pom.xml文件中,加入以下内容:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
如果是自行建立的Java Web项目,则需要引入相关的HttpClient的jar包,可以前往Apache官网的Http组件页download:
http://hc.apache.org/downloads.cgi
或者使用清华大学的镜像文件:
http://mirrors.tuna.tsinghua.edu.cn/apache//httpcomponents/httpclient/binary/httpcomponents-client-4.5.3-bin.zip
在项目中加入了这些Jar包之后,就可以使用HttpClient了。
参考代码如下:
public class HttpClientUtil {
public static String server_addr = "http://localhost:8080/Server-api-simulator";
public static boolean notifyServerJobStateChanged(String jobName, String jobGroup, String state, String triggerIds){
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(server_addr + "/UpdateReqJobStateSvlt");
System.out.println(server_addr + "/UpdateReqJobStateSvlt");
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("jobName", jobName));
nvps.add(new BasicNameValuePair("jobGroup", jobGroup));
nvps.add(new BasicNameValuePair("state", state));
nvps.add(new BasicNameValuePair("triggerIds", ""));
try {
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
httpclient.execute(httpPost);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
public static void main(String[] args){
notifyServerJobStateChanged("AAA", "BBB", "WAITING", "");
}
}