国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

JAVA發送HTTP請求的四種方式總結

瀏覽:2日期:2022-08-15 16:40:10

源代碼:http://github.com/lovewenyo/HttpDemo

1. HttpURLConnection

使用JDK原生提供的net,無需其他jar包;

HttpURLConnection是URLConnection的子類,提供更多的方法,使用更方便。

package httpURLConnection;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;public class HttpURLConnectionHelper { public static String sendRequest(String urlParam,String requestType) { HttpURLConnection con = null; BufferedReader buffer = null; StringBuffer resultBuffer = null; try { URL url = new URL(urlParam); //得到連接對象 con = (HttpURLConnection) url.openConnection(); //設置請求類型 con.setRequestMethod(requestType); //設置請求需要返回的數據類型和字符集類型 con.setRequestProperty('Content-Type', 'application/json;charset=GBK'); //允許寫出 con.setDoOutput(true); //允許讀入 con.setDoInput(true); //不使用緩存 con.setUseCaches(false); //得到響應碼 int responseCode = con.getResponseCode(); if(responseCode == HttpURLConnection.HTTP_OK){ //得到響應流 InputStream inputStream = con.getInputStream(); //將響應流轉換成字符串 resultBuffer = new StringBuffer(); String line; buffer = new BufferedReader(new InputStreamReader(inputStream, 'GBK')); while ((line = buffer.readLine()) != null) { resultBuffer.append(line); } return resultBuffer.toString(); } }catch(Exception e) { e.printStackTrace(); } return ''; } public static void main(String[] args) { String url ='http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=120.79.75.96'; System.out.println(sendRequest(url,'POST')); }}2. URLConnection

使用JDK原生提供的net,無需其他jar包;

建議使用HttpURLConnection

package uRLConnection;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLConnection;public class URLConnectionHelper { public static String sendRequest(String urlParam) { URLConnection con = null; BufferedReader buffer = null; StringBuffer resultBuffer = null; try { URL url = new URL(urlParam); con = url.openConnection(); //設置請求需要返回的數據類型和字符集類型 con.setRequestProperty('Content-Type', 'application/json;charset=GBK'); //允許寫出 con.setDoOutput(true); //允許讀入 con.setDoInput(true); //不使用緩存 con.setUseCaches(false); //得到響應流 InputStream inputStream = con.getInputStream(); //將響應流轉換成字符串 resultBuffer = new StringBuffer(); String line; buffer = new BufferedReader(new InputStreamReader(inputStream, 'GBK')); while ((line = buffer.readLine()) != null) { resultBuffer.append(line); } return resultBuffer.toString(); }catch(Exception e) { e.printStackTrace(); } return ''; } public static void main(String[] args) { String url ='http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=120.79.75.96'; System.out.println(sendRequest(url)); }}3. HttpClient

使用方便,我個人偏愛這種方式,但依賴于第三方jar包,相關maven依賴如下:

<!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient --><dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version></dependency

package httpClient;import java.io.IOException;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.commons.httpclient.params.HttpMethodParams;public class HttpClientHelper { public static String sendPost(String urlParam) throws HttpException, IOException { // 創建httpClient實例對象 HttpClient httpClient = new HttpClient(); // 設置httpClient連接主機服務器超時時間:15000毫秒 httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000); // 創建post請求方法實例對象 PostMethod postMethod = new PostMethod(urlParam); // 設置post請求超時時間 postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000); postMethod.addRequestHeader('Content-Type', 'application/json'); httpClient.executeMethod(postMethod); String result = postMethod.getResponseBodyAsString(); postMethod.releaseConnection(); return result; } public static String sendGet(String urlParam) throws HttpException, IOException { // 創建httpClient實例對象 HttpClient httpClient = new HttpClient(); // 設置httpClient連接主機服務器超時時間:15000毫秒 httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000); // 創建GET請求方法實例對象 GetMethod getMethod = new GetMethod(urlParam); // 設置post請求超時時間 getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000); getMethod.addRequestHeader('Content-Type', 'application/json'); httpClient.executeMethod(getMethod); String result = getMethod.getResponseBodyAsString(); getMethod.releaseConnection(); return result; } public static void main(String[] args) throws HttpException, IOException { String url ='http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=120.79.75.96'; System.out.println(sendPost(url)); System.out.println(sendGet(url)); }}4. Socket

使用JDK原生提供的net,無需其他jar包;

使用起來有點麻煩。

package socket;import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.URLEncoder; import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocketFactory; public class SocketForHttpTest { private int port; private String host; private Socket socket; private BufferedReader bufferedReader; private BufferedWriter bufferedWriter; public SocketForHttpTest(String host,int port) throws Exception{ this.host = host; this.port = port; /** * http協議 */ // socket = new Socket(this.host, this.port); /** * https協議 */ socket = (SSLSocket)((SSLSocketFactory)SSLSocketFactory.getDefault()).createSocket(this.host, this.port); } public void sendGet() throws IOException{ //String requestUrlPath = '/z69183787/article/details/17580325'; String requestUrlPath = '/'; OutputStreamWriter streamWriter = new OutputStreamWriter(socket.getOutputStream()); bufferedWriter = new BufferedWriter(streamWriter); bufferedWriter.write('GET ' + requestUrlPath + ' HTTP/1.1rn'); bufferedWriter.write('Host: ' + this.host + 'rn'); bufferedWriter.write('rn'); bufferedWriter.flush(); BufferedInputStream streamReader = new BufferedInputStream(socket.getInputStream()); bufferedReader = new BufferedReader(new InputStreamReader(streamReader, 'utf-8')); String line = null; while((line = bufferedReader.readLine())!= null){ System.out.println(line); } bufferedReader.close(); bufferedWriter.close(); socket.close(); } public void sendPost() throws IOException{ String path = '/'; String data = URLEncoder.encode('name', 'utf-8') + '=' + URLEncoder.encode('張三', 'utf-8') + '&' + URLEncoder.encode('age', 'utf-8') + '=' + URLEncoder.encode('32', 'utf-8'); // String data = 'name=zhigang_jia'; System.out.println('>>>>>>>>>>>>>>>>>>>>>'+data); OutputStreamWriter streamWriter = new OutputStreamWriter(socket.getOutputStream(), 'utf-8'); bufferedWriter = new BufferedWriter(streamWriter);bufferedWriter.write('POST ' + path + ' HTTP/1.1rn'); bufferedWriter.write('Host: ' + this.host + 'rn'); bufferedWriter.write('Content-Length: ' + data.length() + 'rn'); bufferedWriter.write('Content-Type: application/x-www-form-urlencodedrn'); bufferedWriter.write('rn'); bufferedWriter.write(data); bufferedWriter.write('rn'); bufferedWriter.flush(); BufferedInputStream streamReader = new BufferedInputStream(socket.getInputStream()); bufferedReader = new BufferedReader(new InputStreamReader(streamReader, 'utf-8')); String line = null; while((line = bufferedReader.readLine())!= null) { System.out.println(line); } bufferedReader.close(); bufferedWriter.close(); socket.close(); } public static void main(String[] args) throws Exception { /** * http協議測試 */ //SocketForHttpTest forHttpTest = new SocketForHttpTest('www.baidu.com', 80); /** * https協議測試 */ SocketForHttpTest forHttpTest = new SocketForHttpTest('www.baidu.com', 443); try { forHttpTest.sendGet(); // forHttpTest.sendPost(); } catch (IOException e) { e.printStackTrace(); } } } 總結

到此這篇關于JAVA發送HTTP請求的文章就介紹到這了,更多相關JAVA發送HTTP請求內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 欧美成人高清性色生活 | 日本加勒比在线播放 | 日本亚州在线播放精品 | 免费在线国产视频 | 国产精品一区高清在线观看 | 亚洲免费精品 | 真人一级毛片全部免 | 韩国一级毛片在线观看 | 99久国产 | 久久精品免费全国观看国产 | 久久er热在这里只有精品85 | 亚洲在线视频播放 | 日韩有码第一页 | 日韩欧美一区二区中文字幕 | 在线第一页 | a级做爰片毛片视频 | a级国产乱理伦片在线观看 a级国产乱理伦片在线观看99 | ppypp日本欧美一区二区 | 一个人的视频日本免费 | www.色中色| 午夜爽爽爽男女免费观看hd | 高清一区二区在线观看 | 久久精品国产国产 | 香蕉久久夜色精品国产2020 | 亚洲高清国产品国语在线观看 | 国产亚洲精品2021自在线 | 日韩精品欧美国产精品亚 | 国产亚洲欧美一区 | 日本美女福利视频 | 久久99精品久久久久久久野外 | 久久久精品免费观看 | 在线精品视频播放 | 欧美一级毛片无遮无挡 | 成人午夜在线视频 | 国产一区欧美 | 日韩在线欧美在线 | 久久国产免费一区 | 欧美视频一区二区在线观看 | 99久久成人国产精品免费 | 精品丝袜国产自在线拍亚洲 | 天天看片天天爽_免费播放 天天看夜夜 |