0
点赞
收藏
分享

微信扫一扫

JAVA Request 请求

在Java中,发送HTTP请求是一项常见的任务,可以使用多种库来实现,包括标准库中的HttpURLConnection,以及第三方库如Apache HttpClient和OkHttp。下面分别介绍这三种方法,并提供示例代码。

1. 使用 HttpURLConnection

HttpURLConnection 是Java标准库提供的一个类,用于发送HTTP请求。虽然它的功能不如第三方库强大,但它足够简单且轻量级。

示例:GET请求

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpUrlConnectionExample {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://api.example.com/data");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");

            // 设置请求头(可选)
            connection.setRequestProperty("User-Agent", "Java HTTPURLConnection");

            // 获取响应码
            int responseCode = connection.getResponseCode();
            System.out.println("Response Code: " + responseCode);

            // 读取响应内容
            if (responseCode == HttpURLConnection.HTTP_OK) {
                BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String inputLine;
                StringBuilder content = new StringBuilder();

                while ((inputLine = in.readLine()) != null) {
                    content.append(inputLine);
                }

                in.close();
                System.out.println("Response Content: " + content.toString());
            } else {
                System.out.println("GET request failed.");
            }

            // 断开连接
            connection.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

示例:POST请求

import java.io.OutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpUrlConnectionPostExample {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://api.example.com/data");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", "application/json; utf-8");
            connection.setRequestProperty("Accept", "application/json");
            connection.setDoOutput(true);

            String jsonInputString = "{\"key\":\"value\"}";

            try (OutputStream os = connection.getOutputStream()) {
                byte[] input = jsonInputString.getBytes("utf-8");
                os.write(input, 0, input.length);
            }

            int responseCode = connection.getResponseCode();
            System.out.println("Response Code: " + responseCode);

            if (responseCode == HttpURLConnection.HTTP_OK) {
                BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String inputLine;
                StringBuilder content = new StringBuilder();

                while ((inputLine = in.readLine()) != null) {
                    content.append(inputLine);
                }

                in.close();
                System.out.println("Response Content: " + content.toString());
            } else {
                System.out.println("POST request failed.");
            }

            connection.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2. 使用 Apache HttpClient

Apache HttpClient 是一个功能强大的HTTP客户端库,支持复杂的HTTP请求和响应处理。

示例:GET请求

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HttpClientExample {
    public static void main(String[] args) {
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpGet httpGet = new HttpGet("https://api.example.com/data");

            // 设置请求头(可选)
            httpGet.setHeader("User-Agent", "Apache HttpClient");

            try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
                int statusCode = response.getStatusLine().getStatusCode();
                System.out.println("Response Code: " + statusCode);

                if (statusCode == 200) {
                    String responseString = EntityUtils.toString(response.getEntity());
                    System.out.println("Response Content: " + responseString);
                } else {
                    System.out.println("GET request failed.");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

示例:POST请求

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HttpClientPostExample {
    public static void main(String[] args) {
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpPost httpPost = new HttpPost("https://api.example.com/data");

            // 设置请求头(可选)
            httpPost.setHeader("Content-Type", "application/json");
            httpPost.setHeader("Accept", "application/json");

            // 设置请求体
            String jsonInputString = "{\"key\":\"value\"}";
            StringEntity entity = new StringEntity(jsonInputString);
            httpPost.setEntity(entity);

            try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
                int statusCode = response.getStatusLine().getStatusCode();
                System.out.println("Response Code: " + statusCode);

                if (statusCode == 200) {
                    String responseString = EntityUtils.toString(response.getEntity());
                    System.out.println("Response Content: " + responseString);
                } else {
                    System.out.println("POST request failed.");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3. 使用 OkHttp

OkHttp 是一个现代、高效的HTTP客户端库,广泛用于Android和Java应用程序。

示例:GET请求

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class OkHttpExample {
    public static void main(String[] args) {
        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
                .url("https://api.example.com/data")
                .build();

        try (Response response = client.newCall(request).execute()) {
            if (response.isSuccessful()) {
                String responseBody = response.body().string();
                System.out.println("Response Content: " + responseBody);
            } else {
                System.out.println("GET request failed.");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

示例:POST请求

import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class OkHttpPostExample {
    public static void main(String[] args) {
        OkHttpClient client = new OkHttpClient();

        MediaType JSON = MediaType.get("application/json; charset=utf-8");
        String jsonInputString = "{\"key\":\"value\"}";
        RequestBody body = RequestBody.create(jsonInputString, JSON);

        Request request = new Request.Builder()
                .url("https://api.example.com/data")
                .post(body)
                .build();

        try (Response response = client.newCall(request).execute()) {
            if (response.isSuccessful()) {
                String responseBody = response.body().string();
                System.out.println("Response Content: " + responseBody);
            } else {
                System.out.println("POST request failed.");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

总结

以上介绍了三种常用的Java库来发送HTTP请求:HttpURLConnection、Apache HttpClient 和 OkHttp。每种方法都有其优缺点,选择合适的库取决于你的具体需求。希望这些示例代码能够帮助你更好地理解和使用这些库。如果有任何进一步的问题或需要更多的帮助,请随时告知!

举报

相关推荐

0 条评论