亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

更多QQ空间微信QQ好友腾讯朋友复制链接
您的位置:首頁/技術文章
文章詳情頁

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

【字号: 作者:豬豬瀏覽:5日期: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
相關文章:
主站蜘蛛池模板: 国产区视频在线 | 久久精品一区二区国产 | 成人老司机深夜福利久久 | 亚洲国产成人久久笫一页 | 五月快播| 谁有免费的黄色网址 | 一本一道久久综合狠狠老 | 亚洲精品入口一区二区在线观看 | 一级日韩一级欧美 | 成人综合影院 | 好吊色青青青国产欧美日韩 | 日韩欧美一区二区三区在线观看 | 国产成人综合久久精品红 | 亚洲国产日韩欧美一区二区三区 | a级毛片观看 | 亚洲视频一区二区 | 精品视频专区 | 欧美综合区 | 午夜精品久久久久久久爽 | 久久国产免费福利永久 | 一级毛片直接看 | 爱福利一区二区 | 亚洲午夜精品一级在线 | 天堂黄色网 | 亚洲综合一二三区 | 男人看片资源 | 正在播放国产乱子伦视频 | 性激烈的欧美三级高清视频 | 精品国产免费久久久久久婷婷 | 国内精品福利 | 久99视频 | 亚洲聚色 | 国产精品麻豆 | 欧美日本黄色 | 久青草青综合在线视频 | 女女女女dvd免费 | 5c5c5c精品视频在线观看 | 欧美丝足| 国产视频播放 | 国产美女视频爽爽爽 | 一级特黄视频 |