HttpRequest请求接口
来源:互联网 发布:excel批量打印软件 编辑:程序博客网 时间:2024/06/04 01:06
Spring mvc 框架请求
controller:
<span style="font-size:14px;">@RequestMapping(value = "get", produces = {"application/json;charset=UTF-8"})@ResponseBodypublic String get() { String result = StringUtils.EMPTY;// 意思是result = "" try { int userId = getIntParameter("userId"); result = HttpRequest.get(userId); } catch (Exception e) { LOG.error("====>> Controller.get error:" + e.getMessage()); result = DCDataBean.setError(); } return result;}</span>
HttpRequest类:
public class <span style="font-size:18px;">HttpRequest</span>{private static final HttpService GET = new HttpService (SERVICE_ID, 51);//请求服务public static String get(int userId) {ServiceParam param = new ServiceParam();param.add("userId", userId);return HttpRequestPost.call(GET_ORDER_COUNT, param); }}
封装HttpRequestError类:
public class DCDataBean { private static final String error = "{\"status\":2, \"msg\":\"服务系统出错\",\"data\":\"[]\"}"; private int status; private String msg; private String data; public DCDataBean(int status, String msg, String data){ this.status = status; this.msg = msg; this.data = data; } public DCDataBean(){ } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getData() { return data; } public void setData(String data) { this.data = data; } @Override public String toString() { return "{\"status\":" + status + ", \"msg\":\"" + msg + "\",\"data\":" + data + "}"; } public static String setSocketTimeoutError(){ return socketTimeoutError; } public static String setConnectTimeoutError(){ return connectTimeoutError; } public static String setConnectError(){ return connectError; } public static String setParamError(){ return paramError; } public static String setParamError(String paramName){ return String.format(paramError_params, paramName); } public static String setError(){ return error; }}
封装HttpRequestPost类:
public class <span style="font-size:18px;">HttpRequestPost</span>{ private static final Logger LOG = Logger.getLogger(DCHttpRequest.class); private static final String JSON_KEY_RET = "ret"; private static final String SYS_LOGIN_ID = "sysLoginId"; private static final String CONTENT_TYPE_KEY = "Content-Type"; private static final String USER_AGENT_KEY = "User-Agent"; private static final String CONTENT_TYPE_JSON = "application/json"; private static final String USER_AGENT_ANDROID = "androidClient"; private static final String UTF_8 = "utf-8"; /** * 设置http请求超时配置 * @param httpClient */ private static RequestConfig getCustHttpClientConfig(){ return RequestConfig.custom() .setSocketTimeout(DCServiceConfig.socketTimeout) .setConnectTimeout(DCServiceConfig.connectTimeout).build(); } /** * 设置http请求head头内容 * @param request */ private static void setHttpRequestHead(HttpRequest request){ if(request != null){ request.setHeader(CONTENT_TYPE_KEY, CONTENT_TYPE_JSON); request.addHeader(USER_AGENT_KEY, USER_AGENT_ANDROID); } } /** * 同步数据操作 * @param service * @param param * @return 返回是否成功同步数据 */ public static boolean callAndRetrys(final DCService service, final ServiceParam param) { // 设置当前线程用户 Admin user = Sessions.getUser(); if(user != null && param != null){ param.add(SYS_LOGIN_ID, user.getId()); } String result = post(DCServiceConfig.syncUrl, service.toJSON(param).toJSONString()); JSONObject obj = JSONExUtils.isObj(result); if(obj != null){ result = obj.getString(JSON_KEY_RET); } boolean isOK = StringExUtils.getBoolean(result); if(isOK == false){ LOG.error("====>> DCHttpRequest.callAndRetrys(" + DCServiceConfig.syncUrl + ") ==>> " + service.toJSON(param) + " Synchronous data failure!!"); } return isOK; } /** * 请求接口 * @param service * @param param * @return */ public static String call(DCService service, ServiceParam param) { // 设置当前线程用户 Admin user = Sessions.getUser(); if(user != null && param != null){ param.add(SYS_LOGIN_ID, user.getId()); } JSONObject json = new JSONObject(); json.put("content", param.toString()); String url = null; String result = post(url, json.toJSONString()); if(StringUtils.isBlank(result)){ result = DCDataBean.setError(); } DCDataBean db = JSONObject.parseObject(result, DCDataBean.class); return db.toString(); } public static JSONObject callJSON(DCService service, ServiceParam param) { String res = call(service, param); return JSONObject.parseObject(res); } /** * 发起http请求(post方式) * @param urlStr * @param json * @return * @throws Exception */ private static String post(String urlStr, String json) { String result = StringUtils.EMPTY; String no = UUID.randomUUID().toString(); String logUrl = urlStr + "?data=" + json; if(LOG.isInfoEnabled()){ LOG.info("==>>DCHttpRequest.post url[" + no + "]=" + logUrl); } long begin = System.currentTimeMillis(); CloseableHttpClient httpClient = HttpClients.createDefault(); try { HttpPost httpPost = new HttpPost(urlStr); setHttpRequestHead(httpPost); httpPost.setConfig(getCustHttpClientConfig()); if(StringUtils.isNotBlank(json)){ httpPost.setEntity(new StringEntity(json, UTF_8)); } CloseableHttpResponse httpResponse = httpClient.execute(httpPost); try { if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { HttpEntity entity = httpResponse.getEntity(); String retString = EntityUtils.toString(entity, UTF_8); EntityUtils.consume(entity); if(LOG.isInfoEnabled()){ LOG.info("==>>DCHttpRequest.post result[" + no + "]=" + retString); } result = retString; } long end = System.currentTimeMillis(); if(LOG.isInfoEnabled()){ LOG.info("==>>DCHttpRequest.post 请求[" + no + "][" + logUrl + "] 耗时:" + ((end-begin)/1000.0) + "秒"); } } finally { httpResponse.close(); } }catch(ConnectTimeoutException e){ LOG.error("==>>DCHttpRequest.post error[" + no + "]:" + e.getMessage()); result = DCDataBean.setConnectTimeoutError(); } catch(SocketTimeoutException e){ LOG.error("==>>DCHttpRequest.post error[" + no + "]:" + e.getMessage()); result = DCDataBean.setSocketTimeoutError(); } catch(ClientProtocolException e){ LOG.error("==>>DCHttpRequest.post error[" + no + "]:" + e.getMessage()); result = DCDataBean.setError(); } catch(ConnectException e){ String msg = e.getMessage(); LOG.error("==>>DCHttpRequest.post error[" + no + "]:" + e.getMessage()); if(msg != null && msg.toUpperCase().equalsIgnoreCase("Connection timed out: connect")){ result = DCDataBean.setConnectTimeoutError(); }else{ result = DCDataBean.setConnectError(); } } catch (Exception e) { LOG.error("==>>DCHttpRequest.post error[" + no + "]:" + e.getMessage()); result = DCDataBean.setError(); } finally { try { httpClient.close(); } catch (IOException e) { } } return result; }}
0 0
- HttpRequest请求接口
- linux cgi httprequest 请求
- httpRequest请求方法
- HttpRequest(联网 http请求)
- java httpRequest协议请求分享
- httprequest请求时序和spingMVC
- HttpRequest
- HttpRequest
- httprequest
- HttpRequest
- HttpRequest
- httpRequest
- .net平台HttpRequest请求超时的问题
- HttpComponents —— HTTP请求(HttpRequest)
- java中使用HttpRequest发送请求
- HTTPRequest 网络请求之get请求和post请求
- 后台HttpRequest访问https接口的方法
- 使用HttpRequest向某网页发送Post请求
- spring注解autowired与resource的区别
- 第四篇扩展篇—哈哈,终于等到这一天! 第26回 主公,我来考考你
- 进程间传递数据
- 【C++面试题】利用两个栈实现1个队列
- PDO参数化查询
- HttpRequest请求接口
- 远程桌面,RDP文件密码加密、解密算法(C#)
- iOS 跳转到系统的设置界面
- OS X 10.8.1 系统 HomeBrew的安装和简单使用
- iOS开发——关于拷贝的iOS工程在其他电脑上不能真机和模拟器运行,即只有MyMac设备,没有其他设备
- C++标准模板库
- CSS3选择器(全)
- Errors occurred during the build. Errors running builder 'JavaScript Validator' on project 'XXX'.
- Android 编译脚本编写