[实用工具类 / 方法] -- 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", "");
     }
}

猜你喜欢

转载自web-in.iteye.com/blog/2367565