Java 实现 HTTP 请求的四种方式,你都学会了么?

这篇具有很好参考价值的文章主要介绍了Java 实现 HTTP 请求的四种方式,你都学会了么?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在日常工作和学习中,有很多地方都需要发送HTTP请求,本文以Java为例,总结发送HTTP请求的多种方式

HTTP请求实现过程

GET

  • 创建远程连接

  • 设置连接方式(get、post、put…)

  • 设置连接超时时间

  • 设置响应读取时间

  • 发起请求

  • 获取请求数据

  • 关闭连接

POST

  • 创建远程连接

  • 设置连接方式(get、post、put。。。)

  • 设置连接超时时间

  • 设置响应读取时间

  • 当向远程服务器传送数据/写数据时,需要设置为true(setDoOutput)

  • 当前向远程服务读取数据时,设置为true,该参数可有可无(setDoInput

  • 设置传入参数的格式:(setRequestProperty

  • 设置鉴权信息:Authorization:(setRequestProperty)

  • 设置参数

  • 发起请求

  • 获取请求数据

  • 关闭连接

一、使用 HttpURLConnection 类

HttpURLConnection 是 Java 标准库中用来发送 HTTP 请求和接收 HTTP 响应的类。

它预先定义了一些方法,如 setRequestMethod()setRequestProperty() 和 getResponseCode(),方便开发者自由地控制请求和响应。

示例代码:

import java.net.*;
import java.io.*;

public class HttpURLConnectionExample {

    private static HttpURLConnection con;

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

        URL url = new URL("https://www.example.com");
        con = (HttpURLConnection) url.openConnection();
        con.setRequestMethod("GET");

        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer content = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
            content.append(inputLine);
        }
        in.close();
        con.disconnect();

        System.out.println(content.toString());
    }
}

二、使用 HttpClient 库

HttpClient 是一个 HTTP 客户端库,提供了向 HTTP 服务器发送请求和处理响应的方法。

它支持多种请求协议,如 GET、POST 等,并允许开发者自由地设置请求头、请求参数、连接池等。HttpClient 还提供了基于线程池的异步请求处理方式。

示例代码:

import org.apache.http.HttpEntity;
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) throws Exception {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpGet httpget = new HttpGet("https://www.example.com");
        CloseableHttpResponse response = httpclient.execute(httpget);

        try {
            HttpEntity entity = response.getEntity();
            String result = EntityUtils.toString(entity);
            EntityUtils.consume(entity);

            System.out.println(result);
        } finally {
            response.close();
        }
    }
}

三、使用 Okhttp 库

Okhttp 是由 Square 公司开发的一款轻量级网络请求库,支持普通的 HTTP/1.1 和 SPDY,可与 Retrofit 等网络请求框架搭配使用。

示例代码:

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;

public class OkhttpExample {

    private static final OkHttpClient client = new OkHttpClient();

    public static void main(String[] args) throws IOException {
        Request request = new Request.builder()
         .url("https://www.example.com")
         .build();
        try (Response response = client.newCall(request).execute()) {
            String result = response.body().string();
            System.out.println(result);
        }
    }
}

四、使用 Spring 的 RestTemplate

RestTemplate 是 Spring 库中用于访问 REST API 的类,它基于 HttpMessageConverter 接口,可以将 Java 对象转换为请求参数或响应内容。

RestTemplate 还支持各种 HTTP 请求方法、请求头部定制、文件上传和下载等操作。

示例代码:

public class HttpTemplate {

    public static String httpGet(String url) {
        RestTemplate restTemplate = new RestTemplate();
        String result = restTemplate.exchange(url, HttpMethod.GET, null, String.class).getBody();
        return result;
    }

    public static String httpPost(String url, String name) {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate.postForEntity(url, name, String.class).getBody();
    }

    public static void main(String str[]) {
        System.out.println(HttpTemplate.httpGet("https://www.example.com"));
        System.out.println(HttpTemplate.httpPost("https://www.example.com", "ming"));
    }
}

注:上述示例代码,我们并没有考虑网络请求可能失败的情况。在实际应用中,需要对异常进行捕获和处理。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了 Java 中常见的几种发送 HTTP 请求的方式,可以根据实际需要选择合适的方式。文章来源地址https://www.toymoban.com/news/detail-719116.html

到了这里,关于Java 实现 HTTP 请求的四种方式,你都学会了么?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java对接webservice接口的四种方式

    这两天一直在做外系统对接,对方的接口是webservice的形式,调用起来有些蛋疼,于是在这里记录一下我尝试过的调用WebService的三种方式。 方式一:以HttpURLConnection的方式调用 方式二:使用apache-cxf生成java类调用 下载apache-cxf并配置环境变量(参照JAVA环境变量配置),配置成

    2024年02月09日
    浏览(41)
  • java基础Object转String的四种方式

    java中Object转String有以下几种方法: 1.object.toString()方法 这种方法要注意的是object不能为null,否则会报NullPointException,一般别用这种方法。 2.String.valueOf(object)方法 这种方法不必担心object为null的问题,若为null,会将其转换为”null”字符串,而不是null。这一点要特别注意。”

    2023年04月08日
    浏览(42)
  • 记录-实现深拷贝的四种方式

    深拷贝:在堆内存中重新开辟一个存储空间,完全克隆一个一模一样的对象 浅拷贝:不在堆内存中重新开辟空间,只复制栈内存中的引用地址。本质上两个对象(数组)依然指向同一块存储空间 使用递归的方式进行对象(数组)的深拷贝 奉上已封装的深拷贝函数👇 上方函

    2023年04月21日
    浏览(38)
  • 【CSS】垂直居中的四种实现方式

    在 CSS 中,实现元素的垂直居中是一个常见的需求,但它的实现方法可以根据不同的布局需求和上下文环境而有所不同。对于初学者和专业的前端开发者来说,理解和掌握这些方法是非常重要的。以下是一些流行和高效的垂直居中技术: 使用 Flexbox 使用 Grid 使用定位和 Trans

    2024年01月23日
    浏览(34)
  • java Map集合里面取键和值的四种方式

    使用Map的keySet()方法获取键集合,再使用forEach循环遍历键集合,通过Map的get()方法获取对应的值。例如: 使用Map的values()方法获取值集合,再使用forEach循环遍历值集合。例如: 使用Map的entrySet()方法获取键值对集合,再使用forEach循环遍历键值对集合,通过Entry的getKey()方法获取

    2024年01月15日
    浏览(43)
  • Unity_计时器实现的四种方式

    在Unity中,可以使用Time.deltaTime来计算游戏运行的时间。可以在每一帧的Update()函数中使用它,将它乘以一个时间因子,得到累计的时间。例如: 相信系统学习过Unity的人都听说过协程,使用协程可以轻而易举的来实现计时的操作 Unity中的InvokeRepeating函数可以在一定时间间隔内重

    2024年02月09日
    浏览(41)
  • Java创建数组、赋值的四种方式,声明+创建+初始化 详解

    以int数据类型为例 注意: new 数据类型[]{},其中花括号可以省去,但要在[ ]中填写数组的个数; 创建多维数组时 new后面第一个方括号中的元素数量不能省略 1、一维数组的声明方式: type[] arrayName; 或 type arrayName[]; 推荐使用第一种格式,因为第一种格式具有更好的可读性,表

    2024年04月11日
    浏览(53)
  • java基础:初始化ArrayList时直接赋值的四种方式

    在Java中,初始化ArrayList时直接赋值有以下几种常见方式: 构造器传入集合 : 或者在Java 9及以上版本中使用 List.of() 方法创建不可变列表: 使用匿名内部类 (不常用且可能引起混淆,实际编程中很少这样用): 注意:这种方式利用了匿名内部类的实例初始化块,但不是标准

    2024年04月22日
    浏览(41)
  • Android响应事件onClick方法的四种实现方式

    在Android的开发中,对于点击事件的OnClickListener有下面四种实现方式,可以根据实际场景的需要选择合适的用法。下面以Button按钮来举例说明。 适合场景:任何场景都通用,但对于一个Activity中要是有多个控件要实现onClick方法就会显得代码冗余。 同方法一,两者差别不大 适合

    2024年02月13日
    浏览(48)
  • <JDBC> 批量插入 的四种实现方式:你真的get到了吗?

    🛒 本文收录与专栏 :《JDBC》专栏 📢 专栏目的是解释JDBC的关键点,与各位一路同行,会持续输出,欢迎免费订阅!! ✨总有人间一两风,填我十万八千梦✨ 批量插入就是 批量执行SQL语句 当需要成批插入或者更新记录时,可以采用Java的批量更新机制,这一机制允许多条语

    2024年02月02日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包