利用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日

相关文章

  • JavaWeb简单文件上传流程的实战记录

    JavaWeb简单文件上传实战攻略 简介 本攻略基于JavaWeb开发,帮助初学者快速入门文件上传功能。我们将介绍一个基于Servlet/JSP的简单文件上传例子,包含完整的代码示例、攻略细节和实践体验。 文件上传流程 JavaWeb文件上传可以分为以下几个步骤: 表单设计 – 创建一个包含 file type input 元素的表单,实现文件上传UI. 解…

    Java 2023年5月19日
    00
  • Springboot热部署实现原理及实例详解

    Spring Boot 热部署实现原理及实例详解 什么是热部署 热部署(Hot swapping)是指在应用程序运行时,无需停止或重启应用程序,就可以实时更新部分或全部代码和配置。热部署可以提高应用程序的开发和测试效率,缩短开发和测试的周期,特别是对于大型项目和复杂项目来说,效果尤为明显。 Spring Boot 热部署实现原理 Spring Boot 应用…

    Java 2023年5月19日
    00
  • SpringMVC中重定向model值的获取方式

    在SpringMVC中,重定向到页面时,我们想要将一些值传递给下一个页面,这些值需要被设置在model中。下面是完整攻略: 1. 在Controller中设置重定向的model值 在Controller中设置model值并将请求重定向到另一个页面时,我们需要使用RedirectAttributes接口。可以使用addAttribute()方法将值添加到mod…

    Java 2023年6月16日
    00
  • 微信公众号服务号推送模板消息设置方法(后端java)

    下面是详细的攻略: 微信公众号服务号推送模板消息设置方法 开启模板消息功能 要使用模板消息功能,首先需要在公众号后台开启该功能。具体操作步骤如下: 登录公众号后台,在左侧菜单栏中选择“开发者工具”。 点击页面上方的“接口权限”选项卡,找到“模板消息”并开启该功能。 开启模板消息功能后,需要到“模板消息”选项中添加至少一个消息模板。在添加模板时需要提供模板的标…

    Java 2023年5月20日
    00
  • java如何实现字符串中的字母排序

    要实现字符串中字母的排序,我们可以使用Java中的字符数组和字符串操作。 步骤如下: 首先,从输入的字符串中创建一个字符数组。 然后,使用Java中提供的排序算法,对字符数组进行排序。 重新构建一个字符串,该字符串是排好序的字符数组的字符串表示形式。 以下是一个示例程序,它演示了如何在Java中实现对字符串中字母的排序: 示例1:使用冒泡排序对字符数组进行排…

    Java 2023年5月26日
    00
  • 垃圾回收的实现原理是什么?

    下面我就来详细讲解一下“垃圾回收的实现原理是什么?”的完整使用攻略。 垃圾回收的实现原理 垃圾回收是一种自动化内存管理的技术,它可以在程序运行时,自动回收不再被使用的内存,以避免内存泄漏和内存溢出等问题的发生。垃圾回收的实现原理主要分为以下几个步骤: 标记阶段:首先遍历整个堆内存,对每个对象进行标记,标记出那些是活对象,那些是死对象; 清除阶段:然后将所有死…

    Java 2023年5月11日
    00
  • Spring boot项目中异常拦截设计和处理详解

    下面我将详细讲解“Spring boot项目中异常拦截设计和处理详解”。 1. 为什么需要异常拦截设计和处理 在Spring Boot项目中,错误信息的处理一般都是通过错误页面或者日志来展示,但是使用错误页面很难定位错误,而且不能对错误进行有效的处理;而仅仅使用日志记录错误信息也无法立即响应和处理错误。 因此,为了更好地处理和定位错误,我们需要在Spring…

    Java 2023年5月27日
    00
  • Mac M1 Java 开发环境配置详解

    下面是“Mac M1 Java 开发环境配置详解”的完整攻略: 环境准备 首先,我们需要确认自己的 Mac 是否使用 Apple Silicon 硅片,在 终端 中执行下面的命令进行确认: uname -m 如果输出结果为 arm64 或 aarch64,说明你的 Mac 采用了 Apple Silicon 硅片。 安装 JDK 因为 M1 Mac 采用的是…

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