利用Java实现调用http请求

以下是利用Java实现调用HTTP请求的完整攻略。

简介

在Java中,我们可以使用HttpURLConnection或者Apache HttpClient来实现HTTP请求。两者区别在于HttpURLConnection是内置于Java SDK中的,而Apache HttpClient是第三方库。以下分别讲解这两种方式的使用方法。

使用HttpURLConnection实现HTTP请求

  1. 创建URL对象,指定请求的URL地址。
URL url = new URL("http://example.com/api");
  1. 使用url.openConnection()方法打开一个连接并得到HttpURLConnection对象。
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  1. 设置请求方法和请求头信息。
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
  1. 添加请求参数,并发送请求。
connection.setDoOutput(true);
OutputStream os = connection.getOutputStream();
os.write(json.getBytes("UTF-8"));
os.flush();
os.close();
  1. 接收响应。
int status = connection.getResponseCode();

InputStream inputStream;
if (status >= 400) {
    inputStream = connection.getErrorStream();
} else {
    inputStream = connection.getInputStream();
}

BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();

完整代码示例:

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

public class HttpURLConnectionExample {

    private static final String USER_AGENT = "Mozilla/5.0";
    private static final String POST_URL = "http://example.com/api";
    private static final String POST_PARAMS = "{\n" + "\"name\": \"John\",\r\n" + "\"age\": 31,\r\n" + "\"city\": \"New York\"\r\n" + "}";

    public static void main(String[] args) throws Exception {

        URL obj = new URL(POST_URL);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();

        con.setRequestMethod("POST");
        con.setRequestProperty("User-Agent", USER_AGENT);
        con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

        // For POST only - START
        con.setDoOutput(true);
        OutputStream os = con.getOutputStream();
        os.write(POST_PARAMS.getBytes());
        os.flush();
        os.close();
        // For POST only - END

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

        if (responseCode == HttpURLConnection.HTTP_OK) { //success
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

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

            // print result
            System.out.println(response.toString());
        } else {
            System.out.println("POST request not worked");
        }

    }
}

使用Apache HttpClient实现HTTP请求

  1. 导入httpclienthttpcore两个依赖包。
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.14</version>
</dependency>
  1. 创建CloseableHttpClient对象。
CloseableHttpClient httpclient = HttpClients.createDefault();
  1. 创建HttpPost对象,并设置请求头信息。
HttpPost httppost = new HttpPost("http://example.com/api");

httppost.setHeader("Content-type", "application/json; charset=UTF-8");
  1. 添加请求参数,并执行请求。
StringEntity params = new StringEntity(json.toString(),"UTF-8");
httppost.setEntity(params);
HttpResponse response = httpclient.execute(httppost);
  1. 接收响应。
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity, "UTF-8");

完整代码示例:

import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
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;
import org.json.JSONObject;

public class HttpClientExample {

    public static void main(String[] args) throws ClientProtocolException, IOException {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpPost httppost = new HttpPost("http://example.com/api");

        httppost.setHeader("Content-type", "application/json; charset=UTF-8");

        JSONObject json = new JSONObject();
        json.put("name", "John");
        json.put("age", 31);
        json.put("city", "New York");

        StringEntity params = new StringEntity(json.toString(),"UTF-8");
        httppost.setEntity(params);

        HttpResponse response = httpclient.execute(httppost);

        HttpEntity entity = response.getEntity();
        String responseString = EntityUtils.toString(entity, "UTF-8");
        System.out.println(responseString);
    }
}

以上就是利用Java实现调用HTTP请求的完整攻略,两种方式均已详细讲解,并且分别提供了一个完整代码示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用Java实现调用http请求 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 学习不同 Java.net 语言中类似的函数结构

    学习不同Java.net语言中类似的函数结构,可以遵循以下攻略: 第一步:了解Java.net语言中的常见函数结构 在Java.net语言中,常见的函数结构有方法的声明、方法的参数、方法的返回值等。方法的声明包括方法名、访问修饰符、返回值类型和方法的参数类型等。方法的参数包括形式参数、实际参数和默认值等。方法的返回值包括返回值类型、返回值关键字和返回值的值等…

    Java 2023年5月26日
    00
  • 在JSP中如何实现MD5加密的方法

    在JSP中实现MD5加密有多种方法,其中最为常见的是使用Java的MessageDigest类。下面是实现MD5加密的完整攻略。 步骤一:引入MessageDigest类 Java的MessageDigest类是用于生成消息摘要的工具类。为了在JSP中使用它,我们需要在JSP页面中导入java.security.MessageDigest类。 <%@ …

    Java 2023年6月15日
    00
  • springMVC实现文件上传和下载

    下面我将详细讲解 Spring MVC 实现文件上传和下载的完整攻略。 文件上传 准备工作 在 Spring MVC 中,文件上传需要使用 MultipartResolver 接口来进行解析。常用的实现类有两种,分别是: StandardServletMultipartResolver:使用 Servlet API(3.0)中的 Part 接口进行文件上传解…

    Java 2023年6月15日
    00
  • C#中使用1.7版本驱动操作MongoDB简单例子

    C#中使用1.7版本驱动操作MongoDB的基本步骤如下: 安装MongoDB驱动在Visual Studio中打开NuGet包管理器,搜索MongoDB.Driver,安装最新版本。 创建MongoClient实例使用如下代码创建MongoClient实例: var client = new MongoClient("mongodb://loca…

    Java 2023年5月19日
    00
  • springMvc请求的跳转和传值的方法

    下面我就来详细介绍一下 Spring MVC 请求的跳转和传值的方法。 跳转页面方法 在 Spring MVC 框架中,有多种方法可以实现跳转页面,其中常用的方法有: 1. 重定向(Redirect) 重定向是指在服务器接收到客户端(浏览器)请求后,将该请求转发到另一个 URL 上,使浏览器发起一次新的请求。 在 Spring MVC 中,可以使用以下两种方…

    Java 2023年6月15日
    00
  • Spring Data分页与排序的实现方法

    下面我会详细讲解 Spring Data 分页与排序的实现方法,包含以下内容: 分页与排序的概念及作用 Spring Data 分页与排序的 API 使用方法 示例代码1:Spring Data JPA 分页查询 示例代码2:Spring Data MongoDB 分页查询 一、分页与排序的概念及作用 在实际开发中,我们常常需要处理大量的数据,这时候就需要进…

    Java 2023年5月20日
    00
  • Java序列化的作用是什么?

    Java序列化是指将Java对象转换为字节流的过程,以便将其存储在文件中、在网络上传输或将其传递给其他进程。Java序列化的作用是可以在不同的系统和平台之间传输对象,使其具有通用性和可重用性。 在Java中,我们可以使用Serializable接口将一个对象序列化为字节流,然后在需要时将其重新反序列化回到原始对象。以下是使用Java序列化的几个步骤: 实现可…

    Java 2023年5月11日
    00
  • java实现文件读写与压缩实例

    Java实现文件读写与压缩实例 文件读取 Java中可以通过File类和FileInputStream类来实现文件读取。其中,File类用于表示文件对象,而FileInputStream类用于读文件的数据流。 下面是一个简单的文件读取的示例代码,读取指定路径下的txt文件: import java.io.File; import java.io.FileIn…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部