HTTP的post和get请求--httputils和resttemplate

  通过代码来代替postman来访问接口
一、通过jdk1.8自带的工具类直接请求
不需要导入任何jar包
1 package servlet;23 import java.io.BufferedReader;4 import java.io.IOException;5 import java.io.InputStream;6 import java.io.InputStreamReader;7 import java.io.PrintWriter;8 import java.net.ConnectException;9 import java.net.SocketTimeoutException; 10 import java.net.URL; 11 import java.net.URLConnection; 12 import java.net.URLEncoder; 13 import java.security.cert.X509Certificate; 1415 import javax.net.ssl.HostnameVerifier; 16 import javax.net.ssl.HttpsURLConnection; 17 import javax.net.ssl.SSLContext; 18 import javax.net.ssl.SSLSession; 19 import javax.net.ssl.TrustManager; 20 import javax.net.ssl.X509TrustManager; 2122 import org.slf4j.Logger; 23 import org.slf4j.LoggerFactory; 2425 /** 26* 通用http发送方法 27*28* @author ruoyi 29*/ 30 public class HttpUt 31 { 32private static final Logger log = LoggerFactory.getLogger(HttpUt.class); 3334/** 35* 向指定 URL 发送GET方法的请求 36* 37* @param url 发送请求的 URL 38* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式 。39* @return 所代表远程资源的响应结果 40*/ 41public static String sendGet(String url, String param) 42{ 43StringBuilder result = new StringBuilder(); 44BufferedReader in = null; 45try 46{ 47String urlNameString = url + "?" + param; 48log.info("sendGet - {}", urlNameString); 49URL realUrl = new URL(urlNameString); 50URLConnection connection = realUrl.openConnection(); 51connection.setRequestProperty("accept", "*/*"); 52connection.setRequestProperty("connection", "Keep-Alive"); 53connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); 54connection.connect(); 55in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 56String line; 57while ((line = in.readLine()) != null) 58{ 59result.append(line); 60} 61log.info("recv - {}", result); 62} 63catch (ConnectException e) 64{ 65log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e); 66} 67catch (SocketTimeoutException e) 68{ 69log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e); 70} 71catch (IOException e) 72{ 73log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e); 74} 75catch (Exception e) 76{ 77log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e); 78} 79finally 80{ 81try 82{ 83if (in != null) 84{ 85in.close(); 86} 87} 88catch (Exception ex) 89{ 90log.error("调用in.close Exception, url=" + url + ",param=" + param, ex); 91} 92} 93return result.toString(); 94} 9596/** 97* 向指定 URL 发送POST方法的请求 98* 99* @param url 发送请求的 URL100* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式 。101* @return 所代表远程资源的响应结果102*/103public static String sendPost(String url, String param)104{105PrintWriter out = null;106BufferedReader in = null;107StringBuilder result = new StringBuilder();108try109{110String urlNameString = url + "?" + URLEncoder.encode(param, "UTF-8");111log.info("sendPost - {}", urlNameString);112URL realUrl = new URL(urlNameString);113URLConnection conn = realUrl.openConnection();114conn.setRequestProperty("accept", "*/*");115conn.setRequestProperty("connection", "Keep-Alive");116conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");117conn.setRequestProperty("Accept-Charset", "utf-8");118conn.setRequestProperty("contentType", "utf-8");119conn.setDoOutput(true);120conn.setDoInput(true);121out = new PrintWriter(conn.getOutputStream());122out.print(param);123out.flush();124in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));125String line;126while ((line = in.readLine()) != null)127{128result.append(line);129}130log.info("recv - {}", result);131}132catch (ConnectException e)133{134log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);135}136catch (SocketTimeoutException e)137{138log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);139}140catch (IOException e)141{142log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);143}144catch (Exception e)145{146log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);147}148finally149{150try151{152if (out != null)153{154out.close();155}156if (in != null)157{158in.close();159}160}161catch (IOException ex)162{163log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);164}165}166return result.toString();167}168 169public static String sendSSLPost(String url, String param)170{171StringBuilder result = new StringBuilder();172String urlNameString = url + "?" + param;173try174{175log.info("sendSSLPost - {}", urlNameString);176SSLContext sc = SSLContext.getInstance("SSL");177sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());178URL console = new URL(urlNameString);179HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();180conn.setRequestProperty("accept", "*/*");181conn.setRequestProperty("connection", "Keep-Alive");182conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");183conn.setRequestProperty("Accept-Charset", "utf-8");184conn.setRequestProperty("contentType", "utf-8");185conn.setDoOutput(true);186conn.setDoInput(true);187 188conn.setSSLSocketFactory(sc.getSocketFactory());189conn.setHostnameVerifier(new TrustAnyHostnameVerifier());190conn.connect();191InputStream is = conn.getInputStream();192BufferedReader br = new BufferedReader(new InputStreamReader(is));193String ret = "";194while ((ret = br.readLine()) != null)195{196if (ret != null && !ret.trim().equals(""))197{198result.append(new String(ret.getBytes("ISO-8859-1"), "utf-8"));199}200}201log.info("recv - {}", result);202conn.disconnect();203br.close();204}205catch (ConnectException e)206{207log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e);208}209catch (SocketTimeoutException e)210{211log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e);212}213catch (IOException e)214{215log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e);216}217catch (Exception e)218{219log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e);220}221return result.toString();222}223 224private static class TrustAnyTrustManager implements X509TrustManager225{226@Override227public void checkClientTrusted(X509Certificate[] chain, String authType)228{229}230 231@Override232public void checkServerTrusted(X509Certificate[] chain, String authType)233{234}235 236@Override237public X509Certificate[] getAcceptedIssuers()238{239return new X509Certificate[] {};240}241}242 243private static class TrustAnyHostnameVerifier implements HostnameVerifier244{245@Override246public boolean verify(String hostname, SSLSession session)247{248return true;249}250}251 }二、第二种工具类、(需要导入jar包和配置请求头)
1.所需jar包

HTTP的post和get请求--httputils和resttemplate

文章插图
 2.请求头的配置
String result= HttpUtil.init(url).setMethod(HttpUtil.POST).addHeader("accept", "*/*").addHeader("connection", "Keep-Alive").addHeader("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)").addHeader("contentType", "application/json;charset=utf-8").addHeader("Transfer-Encoding", "chunked").send(para);3.工具类
1 package servlet;23 import java.net.HttpURLConnection;4 import java.net.ProtocolException;5 import java.net.URL;6 import java.net.URLConnection;7 import java.util.Map;8 import java.util.Map.Entry;9 import org.apache.commons.codec.binary.Base64; 10 import org.apache.commons.io.IOUtils; 11 //import org.apache.log4j.Logger; 1213 /** 14* http 工具类 15*16* 17*/ 18 public class HttpUtil { 19public static final String POST="POST"; 20public static final String GET="GET"; 2122private HttpURLConnection connection; 2324private HttpUtil(String url){ 25try { 26connection= (HttpURLConnection) new URL(url).openConnection(); 27connection.setDoInput(true); 28connection.setDoOutput(true); 29} catch (Exception e) { 30 //Logger.getLogger("com.rockontrol.error").error(e); 31connection= null; 32} 33} 34public static HttpUtil init(String url){ 35HttpUtil httpUtil=new HttpUtil(url);36if(httpUtil.connection==null) 37return null; 38return httpUtil.setMethod(POST); 39} 4041public HttpUtil addHeader(String type,String value){ 42connIsNull(); 43connection.addRequestProperty(type, value); 44return this; 45} 46public HttpUtil addHeader(Map<String, String> headers){ 47for(Entry<String, String> entry:headers.entrySet()) 48addHeader(entry.getKey(), entry.getValue()); 49return this; 50} 51public HttpUtil setTimeout(int m){ 52connIsNull(); 53connection.setConnectTimeout(m); 54connection.setReadTimeout(m); 55return this; 56} 57public HttpUtil setMethod(String method){ 58connIsNull(); 59try { 60connection.setRequestMethod(method); 61} catch (ProtocolException e) { 62 //Logger.getLogger("com.rockontrol.error").error(e); 63return null; 64} 65return this; 66} 6768public String send(String msg,String encode){ 69connIsNull(); 70try { 71if(!"".equals(msg)){ 72System.out.println("00"); 73IOUtils.write(msg, connection.getOutputStream(),encode); 74System.out.println("11"); 75} 76if(connection.getResponseCode()==HttpURLConnection.HTTP_OK) { 77System.out.println("11"); 78return IOUtils.toString(connection.getInputStream(),encode); 79}else{ 80throw new RuntimeException("接受数据失败!"+connection.getResponseCode()+" : "+connection.getResponseMessage()); 81} 82} catch (Exception e) { 83 //Logger.getLogger("com.rockontrol.error").error(e); 84return null; 85}finally{ 86close(); 87} 88} 89public String getImage(){ 90connIsNull(); 91try { 92IOUtils.write("", connection.getOutputStream()); 9394if(connection.getResponseCode()==HttpURLConnection.HTTP_OK){ 95//return IOUtils.toString(connection.getInputStream(),encode); 96byte[] buffer=IOUtils.toByteArray(connection.getInputStream()); 97return Base64.encodeBase64String(buffer); 98}else{ 99throw new RuntimeException("接受数据失败!"+connection.getResponseCode()+" : "+connection.getResponseMessage());100}101} catch (Exception e) {102 103return null;104}finally{105close();106}107}108public String send(String msg){109return send(msg,"UTF-8");110}111112public URLConnection getConnection(){113connIsNull();114return connection;115}116117public void close(){118IOUtils.close(connection);119}120121private void connIsNull(){122if(connection==null){123throw new RuntimeException("无法建立连接!");124}125}126 }【HTTP的post和get请求--httputils和resttemplate】三、使用resttemplate 
1RestTemplate client = new RestTemplate(); 2HttpHeaders headers = new HttpHeaders(); 3HttpMethod method = HttpMethod.GET; 45// 以表单的方式提交 6 //headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); 7//将请求头部和参数合成一个请求 8HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(headers); 9//执行HTTP请求,将返回的结构使用ResultVO类格式化10ResponseEntity<String> response = client.exchange(url, method, requestEntity,String.class);11System.out.println("---------------"+response.getBody());