java的http请求实例
package vqmp.data.pull.vqmpull.common.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import vqmp.data.pull.vqmpull.common.enums.ResultEnum; import vqmp.data.pull.vqmpull.common.exception.VQMPException; import java.util.List; /** * @author 01372231 * @ * @date 2019/3/4 15:14 */ public class RequestUtil { private static final Logger logger = LoggerFactory.getLogger(RequestUtil.class); private RequestUtil() { throw new IllegalAccessError("Instantiate me is forbid"); } /** * * * @return 返回cookie值 * @throws Exception 获取token失败 */ public static List<String> getItobToken(String itobTokenUrl) { LinkedMultiValueMap<String, String> body = new LinkedMultiValueMap(); body.add("userRole", "VIP"); body.add("centerName", "SF"); ResponseEntity request = requestEntity(itobTokenUrl, HttpMethod.POST, body, new HttpHeaders()); HttpHeaders headers = request.getHeaders(); List<String> strings = headers.get("Set-Cookie"); if (null == strings) { logger.error("url{}-获取token失败", itobTokenUrl); throw new VQMPException(ResultEnum.FAIL.getCode(), "获取token失败"); } //获取jira数据 return strings; } public static ResponseEntity requestEntity(String url, HttpMethod method, MultiValueMap<String, String> body, HttpHeaders headers) { logger.info("发送请求地址url:{}", url); SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); requestFactory.setConnectTimeout(10000); RestTemplate restTemplate = new RestTemplate(requestFactory); if (method.equals(HttpMethod.POST)) { headers.set("Content-Type", "application/x-www-form-urlencoded"); } HttpEntity entity = null; if (null != body) { entity = new HttpEntity(body, headers); } else { entity = new HttpEntity(headers); } ResponseEntity<String> responseEntity = restTemplate.exchange(url, method, entity, String.class); if (responseEntity.getStatusCode() == HttpStatus.REQUEST_TIMEOUT) { logger.error("接口请求超时,接口地址: {}", url); throw new VQMPException("接口" + url + "请求超时"); } return responseEntity; } /** * get response body * * @param url request url * @param method reuqest method * @param body request params * @param headers request headers * @return * @throws Exception */ public static String request(String url, HttpMethod method, MultiValueMap<String, Object> body, HttpHeaders headers) { logger.info("发送请求地址url:{}", url); SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); requestFactory.setConnectTimeout(10000); RestTemplate restTemplate = new RestTemplate(requestFactory); headers.set("Content-Type", "application/x-www-form-urlencoded"); HttpEntity entity = new HttpEntity(body, headers); ResponseEntity<String> responseEntity = restTemplate.exchange(url, method, entity, String.class); if (responseEntity.getStatusCode() == HttpStatus.REQUEST_TIMEOUT) { logger.error("接口请求超时,接口地址: {}", url); throw new VQMPException("接口" + url + "请求超时"); } if (responseEntity.getStatusCode().value() != 200) { throw new VQMPException(String.format("tcmp响应报错 : {} ", responseEntity.toString())); } return responseEntity.getBody(); } }
package com.sf.tcmp.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.*; import java.net.ConnectException; import java.net.HttpURLConnection; import java.net.URL; /** * * @author 01368324 * */ public final class RequestAPIUtil { private static final Logger logger = LoggerFactory.getLogger(RequestAPIUtil.class); private static final String LOGSTRING = "接口地址:{},接口名:{}"; private RequestAPIUtil(){ throw new IllegalAccessError("Instantiate me is forbid"); } /** * Jira 的webService接口请求 * @param urlStr 请求url * @param apiName 接口名 * @param arg 参数 * @return */ public static String postRequest(String urlStr,String apiName,String arg){ String result = ""; try { URL url = new URL(urlStr); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setDoInput(true); con.setDoOutput(true); con.setRequestMethod("POST"); con.setConnectTimeout(10000); con.setRequestProperty("Content-Type", "application/xml;"); OutputStream oStream = con.getOutputStream(); String soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"+ "<soapenv:Envelope "+ "xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" "+ "xmlns:gs=\"http://server.itms.inf.itdd.sf.com/\">"+ " <soapenv:Header/>"+ " <soapenv:Body>"; soap = soap+" <gs:"+apiName+">"; soap=soap+" <arg0>" + arg + "</arg0>"; soap = soap+" </gs:"+apiName+">"; soap = soap+" </soap:Body>"+ "</soapenv:Envelope>"; oStream.write(soap.getBytes()); oStream.close(); InputStream iStream = con.getInputStream(); Reader reader = new InputStreamReader(iStream,"utf-8"); int tempChar; String str = new String(""); while((tempChar = reader.read()) != -1){ str += Character.toString ((char)tempChar); } //下面这行输出返回的xml到控制台,相关的解析操作大家自己动手喽。 //如果想要简单的话,也可以用正则表达式取结果出来。 result = str.substring(str.indexOf("<return>")+8, str.indexOf("</return>")); iStream.close(); oStream.close(); con.disconnect(); } catch (ConnectException e){ logger.error(LOGSTRING,urlStr,apiName,e); }catch (IOException e) { logger.error(LOGSTRING,urlStr,apiName,e); } catch (Exception e){ logger.error(LOGSTRING,urlStr,apiName,e); } return result; } /** * webservice接口请求demo * @return */ public static String requestDemo(){ String result = ""; try { //http://10.202.6.70:6060/itdd-app/inf-ws/SyncITMSData String urlStr = ""; URL url = new URL(urlStr); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setDoInput(true); con.setDoOutput(true); con.setRequestMethod("POST"); con.setRequestProperty("Content-Type", "text/xml;charset=UTF-8"); OutputStream oStream = con.getOutputStream(); //下面这行代码是用字符串拼出要发送的xml,xml的内容是从测试软件里拷贝出来的 //需要注意的是,有些空格不要弄丢哦,要不然会报500错误的。 //参数什么的,你可以封装一下方法,自动生成对应的xml脚本 String soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"+ "<soapenv:Envelope "+ "xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" "+ "xmlns:gs=\"http://server.itms.inf.itdd.sf.com/\">"+ " <soapenv:Header/>"+ " <soapenv:Body>"+ " <gs:getVersionBySysCode>"+ " <arg0>" + "ESG-SDEIS-CORE" + "</arg0>"+ " </gs:getVersionBySysCode>"+ " </soap:Body>"+ "</soapenv:Envelope>"; oStream.write(soap.getBytes()); oStream.close(); InputStream iStream = con.getInputStream(); Reader reader = new InputStreamReader(iStream); int tempChar; StringBuilder str = new StringBuilder(); while((tempChar = reader.read()) != -1){ str.append(Character.toString((char) tempChar)); } //下面这行输出返回的xml到控制台,相关的解析操作大家自己动手喽。 //如果想要简单的话,也可以用正则表达式取结果出来。 result = str.substring(str.indexOf("<return>")+8, str.indexOf("</return>")); iStream.close(); oStream.close(); con.disconnect(); } catch (Exception e) { logger.error("content:",e); } return result; } }
posted on 2019-04-12 18:05 zhulibin2012 阅读(477) 评论(0) 编辑 收藏 举报