1. HttpURLConnection

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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));
    }
}
1

  

3. HttpClient

使用方便,我个人偏爱这种方式,但依赖于第三方jar包,相关maven依赖如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->
<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency
1
2
3
4
5
6
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包;

使用起来有点麻烦。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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.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.com", 80); 
        /** 
         * https协议测试 
         */ 
        SocketForHttpTest forHttpTest = new SocketForHttpTest("www.baidu.com", 443); 
        try
            forHttpTest.sendGet(); 
        //  forHttpTest.sendPost(); 
        } catch (IOException e) { 
 
            e.printStackTrace(); 
        
    
 

  

posted on   ygunoil  阅读(917)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
历史上的今天:
2019-08-13 经典SQL语句大全(绝对的经典)
2019-08-13 npm发布包
2019-08-13 前端工程化
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示