java发送http的get、post请求实现代码

下面是Java发送HTTP的GET、POST请求实现代码的完整攻略,包含两条示例说明。

准备工作

在使用Java发送HTTP请求前,需要导入相关包和类库。Java提供了两种发送HTTP请求的方式:URLConnection和HttpClient。我们可以根据实际的需求选择使用不同的方法。

1. 使用URLConnection发送HTTP请求

使用URLConnection发送HTTP请求,需要导入以下包:

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

其中,URL类用于定义URL地址,URLConnection用于打开URL连接并发送请求,BufferedReader用于读取返回的数据。

2. 使用HttpClient发送HTTP请求

使用HttpClient发送HTTP请求,需要导入Apache HttpClient libraries,可通过gradle或maven等依赖管理工具导入依赖。在Java9之后,HttpClient包被纳入到JDK核心库中,因此也可以直接使用。

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;

其中,HttpClient是Apache的开源项目,用于发送HTTP请求。HttpClientBuilder则用于创建HttpClient对象。HttpGet是Http请求方法类,用于发送get方法请求。同时,还有HttpPost类,用于发送post方法请求。

发送GET请求

使用URLConnection

首先,我们需要定义请求的URL和请求方式,然后打开URLConnection对象,并设置请求头和请求体,最后读取返回的数据。

String urlStr = "http://www.example.com/getData?key=value";
URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0");
conn.setRequestProperty("Accept-Charset", "utf-8");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}

其中,User-AgentAccept-Charset是请求头,表示浏览器的信息和编码方式。getInputStream()方法用于获取数据流。reader.readLine()方法用于读取数据流中的每一行数据,直到为空时结束。

使用HttpClient

使用HttpClient发送GET请求,也需要先定义请求的URL和请求方式,然后创建HttpClient对象,并创建HttpGet对象,设置请求头,发送请求,最后读取返回的数据流。

String urlStr = "http://www.example.com/getData?key=value";
HttpClient httpClient = HttpClientBuilder.create().build();
HttpGet httpGet = new HttpGet(urlStr);
httpGet.addHeader("User-Agent", "Mozilla/5.0");
httpGet.addHeader("Accept-Charset", "utf-8");
HttpResponse response = httpClient.execute(httpGet);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line = null;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}

发送POST请求

使用URLConnection

使用URLConnection发送POST请求,需要先定义请求的URL和请求方式,然后打开URLConnection对象,并设置请求头和请求体。

String urlStr = "http://www.example.com/submitData";
URL url = new URL(urlStr);
String data = "key1=value1&key2=value2";
URLConnection conn = url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("User-Agent", "Mozilla/5.0");
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(data.getBytes().length));
conn.setDoOutput(true);
conn.getOutputStream().write(data.getBytes());

其中,setRequestMethod()用于设置请求方式为POST,setDoOutput(true)用于设置URLConnection对象的输出属性为true,表示可对请求进行输出。getOutputStream()方法用于获取URLConnection的输出流,以便向连接中写入请求体。

使用HttpClient

使用HttpClient发送POST请求也需要先定义请求的URL和请求方式,然后创建HttpClient对象和HttpPost对象,设置请求头和请求体,最后发送请求并读取返回的数据流。

String urlStr = "http://www.example.com/submitData";
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(urlStr);
String data = "key1=value1&key2=value2";
StringEntity entity = new StringEntity(data, Charset.forName("UTF-8"));
entity.setContentType("application/x-www-form-urlencoded");
httpPost.setEntity(entity);
httpPost.addHeader("User-Agent", "Mozilla/5.0");
httpPost.addHeader("Accept-Charset", "utf-8");
HttpResponse response = httpClient.execute(httpPost);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line = null;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}

其中,setEntity()方法用于设置HttpEntity对象,表示请求体。addHeader()方法用于设置请求头。ContentType用于设置编码方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java发送http的get、post请求实现代码 - Python技术站

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

相关文章

  • javascript中undefined与null的区别

    来详细讲解一下 JavaScript 中 undefined 与 null 的区别。 概述 JavaScript 中的 undefined 和 null 都是表示值的不存在或无效。它们两者很相似,但又有所不同。下面我们来逐个解释。 undefined undefined 代表某个变量未被定义,或者存在但没有被赋值。在以下三种情况中,变量的值将默认为 unde…

    Java 2023年5月26日
    00
  • Docker如何制作自己镜像并上传dockerhub

    Docker是一种容器化解决方案,它可以帮助开发者在不同的操作系统中兼容使用相同的软件环境,提高开发效率和软件交付速度。Docker的核心是镜像机制,因此制作一个自己的Docker镜像并上传到Docker Hub是非常重要的,本文将详细讲解Docker制作自己镜像并上传dockerhub的完整攻略。 1. 准备工作 要制作一个Docker镜像并上传到Dock…

    Java 2023年5月19日
    00
  • 2种Java删除ArrayList中的重复元素的方法

    当我们使用ArrayList集合存储元素时,有时候需要删除其中的重复元素。为此我们需要使用一些适当的方法。以下是两种Java删除ArrayList中重复元素的方法: 方法一: 使用LinkedHashSet 借助LinkedHashSet的特性,我们可以很容易实现重复元素的删除。该方法具体分为以下步骤: 创建一个ArrayList对象并添加需要删除重复元素的…

    Java 2023年6月15日
    00
  • Java 判断实体对象及所有属性是否为空的操作

    Java 判断实体对象及所有属性是否为空的操作是日常开发中经常遇到的问题之一,可以用来对数据进行合法性校验。下面将详细介绍如何实现该操作的完整攻略。 判断实体对象是否为空 判断实体对象是否为空可以通过对实体对象本身进行判断的方法实现。我们可以使用 Java 中的 == 或 null 进行判断。 示例: public boolean isObjectNull(…

    Java 2023年5月26日
    00
  • JSP 前端数据本地排序实例代码

    当我们需要对表格数据进行排序时,我们可以使用前端的JavaScript进行排序。下面是一个使用JSP和JavaScript实现前端数据本地排序的示例代码: 首先,我们可以创建一个包含表格的HTML代码,表格中的每行数据都由一个对象构成。对象中的每个属性对应每一列的数据,例如姓名、身高、年龄等。 <table id="myTable"…

    Java 2023年6月15日
    00
  • Java获取精确到秒的时间戳方法

    当我们需要获取当前时间的时间戳时,可以使用Java提供的System.currentTimeMillis()方法,该方法返回的是自1970年1月1日零时零分零秒(GMT/UTC)以来的毫秒数,也就是常说的Unix时间戳。但有时候我们需要获取精确到秒的时间戳,可以通过以下两种方式实现。 1. 使用Java 8中的Instant类 Java 8中新增了一个新的日…

    Java 2023年5月20日
    00
  • volatile关键字如何保证线程安全?

    Volatile关键字被用于修饰变量,意味着当多个线程同时访问该变量时,会保证每个线程都读取到最新的值,从而保证线程安全。下面详细讲解Volatile关键字如何实现线程安全,包含使用示例。 线程安全的问题 当多个线程同时访问同一个变量时,可能会出现线程安全的问题,例如一个线程在读取一个变量时,另一个线程正在修改这个变量,那么读取的值就可能失真。此外,在JVM…

    Java 2023年5月10日
    00
  • springmvc下实现登录验证码功能示例

    Spring MVC 下实现登录验证码功能示例 在 Web 开发中,为了防止恶意攻击和机器人攻击,我们通常会在登录页面添加验证码功能。在 Spring MVC 中,我们可以使用 Java 的 Graphics2D 类来生成验证码图片,并使用 Session 来存储验证码。本文将详细讲解如何在 Spring MVC 中实现登录验证码功能,并提供两个示例说明。 …

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