admin管理员组

文章数量:1794759

JAVA发送HTTP请求的几种方式

JAVA发送HTTP请求的几种方式

HTTPs://www.105188/fanwendaquan/16867653811298148.html style="color:#2aa0ea" target=_blank class=infotextkey>JAVA发送HTTP请求的几种方式 以下4种分别可发送get和post请求的方法:

第1种:HttpURLConnection、 第2种:URLConnection、 第3种:HttpClient, HttpClient常用HttpGet和HttpPost这两个类,分别对应Get方式和Post方式。 使用DefaultHttpClient类的execute方法发送HttpGet和HttpPost这两个类的请求,并返回HttpResponse对象 第4种:Socket, 朋友们要注意的是,使用第3种HttpClient时需要依赖于三个jar包, 分别是:apache-httpcomponents-httpclient.jar、 commons-logging-1.0.4.jar、httpcore-4.1.1.jar。 httpclient使用了单独的一个HttpMethod子类来处理文件的上传, 这个类就是MultipartPostMethod,该类已经封装了文件上传的细节, 对于MIME类型的请求,httpclient建议全用MulitPartRequestEntity进行包装 最新版的httpClient使用实现类的是closeableHTTPClient,以前的default作废了

a: HttpURLConnection 使用JDK原生提供的net,无需其他jar包; HttpURLConnection是URLConnection的子类,提供更多的方法,使用更方便。

package httpURLConnection; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.HttpURLConnection; import java.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 ="int.dpool.sina/iplookup/iplookup.php?ip=120.79.75.96"; System.out.println(sendRequest(url,"POST")); } }

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

建议使用HttpURLConnection

package uRLConnection; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.HttpURLConnection; import java.URL; import java.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 ="int.dpool.sina/iplookup/iplookup.php?ip=120.79.75.96"; System.out.println(sendRequest(url)); } }

c HttpClient 依赖于第三方jar包,相关maven依赖如下:

<!-- mvnrepository/artifact/commons-httpclient/commons-httpclient --> <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency

d. 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.Socket; import java.URLEncoder; import javax.ssl.SSLSocket; import javax.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.1\\r\\n"); bufferedWriter.write("Host: " + this.host + "\\r\\n"); bufferedWriter.write("\\r\\n"); 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.1\\r\\n"); bufferedWriter.write("Host: " + this.host + "\\r\\n"); bufferedWriter.write("Content-Length: " + data.length() + "\\r\\n"); bufferedWriter.write("Content-Type: application/x-www-form-urlencoded\\r\\n"); bufferedWriter.write("\\r\\n"); bufferedWriter.write(data); bufferedWriter.write("\\r\\n"); 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", 80); /** * https协议测试 */ SocketForHttpTest forHttpTest = new SocketForHttpTest("www.baidu", 443); try { forHttpTest.sendGet(); // forHttpTest.sendPost(); } catch (IOException e) { e.printStackTrace(); } } }

转自:blog.csdn/longshehe9319/article/details/80509829?utm_medium=distribute.pc_relevant_download.none-task-blog-2~default~BlogCommendFromBaidu~default-1.test_version_3&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-2~default~BlogCommendFromBaidu~default-1.test_version_

本文标签: 几种方式javaHTTP