java mvc httpget怎么使用_springMVC、httpClient调用别人提供的接口!!!(外加定时调用)...

importcom.ibm.db.util.AppConfig;importcom.ibm.db.util.JacksonUitl;importorg.apache.http.HttpEntity;importorg.apache.http.HttpHost;importorg.apache.http.HttpResponse;importorg.apache.http.auth.AuthScope;importorg.apache.http.auth.UsernamePasswordCredentials;importorg.apache.http.client.AuthCache;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.client.protocol.ClientContext;importorg.apache.http.entity.StringEntity;importorg.apache.http.impl.auth.BasicScheme;importorg.apache.http.impl.client.BasicAuthCache;importorg.apache.http.impl.client.DefaultHttpClient;importorg.apache.http.protocol.BasicHttpContext;importorg.apache.http.protocol.HTTP;importorg.codehaus.jackson.JsonNode;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.util.HashMap;importjava.util.LinkedHashMap;importjava.util.Map;/***

* 调用itil工具类*/

public classItilRequestUtil {

private String itil_url= ""; //被调用接口的urlprivate String itil_usernmae = ""; //用户名private String itil_passWorld = ""; //密码private int itil_port =; //端口号private String itil_protocol = "http";//协议publicItilRequestUtil(){

}/*** rest post 方式调用itil接口

*@paramJsonParams json格式的请求参数

*@paramapiUrl api接口地址

*@return*@throwsException*/

public JsonNode httpRequestPost(String JsonParams,String apiUrl)throwsException{

HttpHost targetHost= newHttpHost(itil_url, itil_port, itil_protocol);

DefaultHttpClient httpclient= newDefaultHttpClient();

//设置httpclient的重试次数,默认是3次,当前是禁用掉的(如果项目量不到,这个默认即可!)

int SO_TIMEOUT = 60*1000;//设置等待数据超过时间为60秒,这里是连上别人的接口,但是迟迟不返回数据(堵塞的异常处理)

HttpParams params = new BasicHttpParams();

params.setIntParameter(CoreConnectionPNames.SO_TIMEOUT,SO_TIMEOUT);

httpclient.setDefaultHttpParams(params);//此用户名和密码上生产前需要修改为自己的账户

httpclient.getCredentialsProvider().setCredentials(newAuthScope(targetHost.getHostName(), targetHost.getPort()),newUsernamePasswordCredentials(itil_usernmae, itil_passWorld));

AuthCache authCache= newBasicAuthCache();

BasicScheme basicAuth= newBasicScheme();

authCache.put(targetHost, basicAuth);

BasicHttpContext localcontext= newBasicHttpContext();

localcontext.setAttribute(ClientContext.AUTH_CACHE, authCache);

String url= itil_protocol+"://"+itil_url+":"+itil_port+apiUrl;

HttpPost httpPost= newHttpPost(url);

StringEntity stringEntity= newStringEntity(JsonParams, HTTP.UTF_8);

httpPost.setHeader("Content-Type", "application/json");

httpPost.setHeader("accept","application/json");

httpPost.setEntity(stringEntity);

HttpResponse response=httpclient.execute(targetHost, httpPost, localcontext);

HttpEntity entity=response.getEntity();

System.out.println("StatusCode:" +response.getStatusLine().getStatusCode());

BufferedReader reader= new BufferedReader(newInputStreamReader(entity.getContent(),"utf-8"));//防止乱码

String buffer= "";

StringBuffer sb= newStringBuffer();while((buffer = reader.readLine())!=null){

sb.append(buffer);

}

reader.close();

httpPost.releaseConnection();

System.out.println("entity:" +sb.toString());

httpclient.getConnectionManager().shutdown();

JsonNode json=JacksonUitl.getObjectMapper().readTree(sb.toString());returnjson;

}/*** rest get 方式调用itil接口

*@paramapiUrl api接口地址,参数直接拼在地址后面

*@returnjson字符串格式的返回结果 其中ReturnCode为0表示请求成功

*@throwsException*/

public JsonNode httpRequestGet(HashMap content,String apiUrl)throwsException{

HttpHost targetHost= newHttpHost(itil_url, itil_port, itil_protocol);

DefaultHttpClient httpclient= newDefaultHttpClient();//此用户名和密码上生产前需要修改为自己的账户

httpclient.getCredentialsProvider().setCredentials(newAuthScope(targetHost.getHostName(), targetHost.getPort()),newUsernamePasswordCredentials(itil_usernmae, itil_passWorld));

AuthCache authCache= newBasicAuthCache();

BasicScheme basicAuth= newBasicScheme();

authCache.put(targetHost, basicAuth);

BasicHttpContext localcontext= newBasicHttpContext();

localcontext.setAttribute(ClientContext.AUTH_CACHE, authCache);

String url= itil_protocol+"://"+itil_url+":"+itil_port+apiUrl;

HttpGet httpGet= newHttpGet(url);httpGet.setHeader("Content-Type", "application/json");

httpGet.setHeader("accept","application/json");

HttpResponse response=httpclient.execute(targetHost, httpGet, localcontext);

HttpEntity entity=response.getEntity();

System.out.println("StatusCode:" +response.getStatusLine().getStatusCode());

BufferedReader reader= new BufferedReader(newInputStreamReader(entity.getContent()));

String buffer= "";

StringBuffer sb= newStringBuffer();while((buffer = reader.readLine())!=null){

sb.append(buffer);

}

reader.close();

httpGet.releaseConnection();

System.out.println("entity:" +sb.toString());

httpclient.getConnectionManager().shutdown();

JsonNode json=JacksonUitl.getObjectMapper().readTree(sb.toString());returnjson;

}public static void main(String[] args) throwsException {

/**

*其实这里不需要写这个测试的,实际项目中,直接写自己的方法调用即可!

*/

String apiUrl = "/SM/9/rest/reportoutages?view=expand";//调用方法对应的URL

HashMap map = new LinkedHashMap();

map.put("sourceId","GEN00002");

map.put("assignee","0020345");

map.put("title","测试");

map.put("category","流程管理");

map.put("subcategory","itil系统");

map.put("businessArea","其他");

map.put("description","xx");

map.put("requestor","036131");

map.put("requestor","036131");

map.put("plannedEnd","2016-04-07T10:11:54+00:00");

HashMap> paramsMap = new LinkedHashMap>();//paramsMap.put("GenRequest",map);

paramsMap.put("orderInfo",map);

String params=JacksonUitl.getObjectMapper().writeValueAsString(paramsMap);//需要传入的请求参数

String pp = "{"+"\"orderInfo\": {"

+"\"sourceId\": \"GEN00002\","

+"\"assignee\": \"00203045\","

+"\"title\": \"测试:评估体系平台系统发起新情求\","

+"\"category\": \"流程管理\","

+"\"subcategory\": \"ITIL系统\","

+"\"businessArea\": \"其他\","

+"\"description\": [\"评估体系平台系统发起新情求\",\"需求详细描述\"],"

+"\"requestor\": \"036131\","

+"\"plannedEnd\": \"2015-12-11T01:00:00+08:00\"," +"}"+"}";//map.put("name","123");

newItilRequestUtil().httpRequestPost(pp, apiUrl);//new ItilRequestUtil().httpRequestGet(null, apiUrl);

try{//httpRequestPost();

/*test(url_2,"{\"\":\"\"}");*/}catch(Exception e){

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值