我的编程空间,编程开发者的网络收藏夹
学习永远不晚

在JAVA中发送HTTP请求的方式有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

在JAVA中发送HTTP请求的方式有哪些

在JAVA中发送HTTP请求的方式有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

Java是什么

Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序。

HttpURLConnection

使用JDK原生提供的net,无需其他jar包;

HttpURLConnection是URLConnection的子类,提供更多的方法,使用更方便。

package httpURLConnection;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;public class HttpURLConnectionHelper { public static String sendRequest(String urlParam,String requestType) {  HttpURLConnection con = null;   BufferedReader buffer = null;   StringBuffer resultBuffer = null;   try {   URL url = new URL(urlParam);    //得到连接对象   con = (HttpURLConnection) url.openConnection();    //设置请求类型   con.setRequestMethod(requestType);    //设置请求需要返回的数据类型和字符集类型   con.setRequestProperty("Content-Type", "application/json;charset=GBK");    //允许写出   con.setDoOutput(true);   //允许读入   con.setDoInput(true);   //不使用缓存   con.setUseCaches(false);   //得到响应码   int responseCode = con.getResponseCode();   if(responseCode == HttpURLConnection.HTTP_OK){    //得到响应流    InputStream inputStream = con.getInputStream();    //将响应流转换成字符串    resultBuffer = new StringBuffer();    String line;    buffer = new BufferedReader(new InputStreamReader(inputStream, "GBK"));    while ((line = buffer.readLine()) != null) {     resultBuffer.append(line);    }    return resultBuffer.toString();   }  }catch(Exception e) {   e.printStackTrace();  }  return ""; } public static void main(String[] args) {  String url ="http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=120.79.75.96";  System.out.println(sendRequest(url,"POST")); }}

2. URLConnection

使用JDK原生提供的net,无需其他jar包;

建议使用HttpURLConnection

package uRLConnection;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLConnection;public class URLConnectionHelper { public static String sendRequest(String urlParam) {  URLConnection con = null;   BufferedReader buffer = null;   StringBuffer resultBuffer = null;   try {    URL url = new URL(urlParam);     con = url.openConnection();    //设置请求需要返回的数据类型和字符集类型   con.setRequestProperty("Content-Type", "application/json;charset=GBK");    //允许写出   con.setDoOutput(true);   //允许读入   con.setDoInput(true);   //不使用缓存   con.setUseCaches(false);   //得到响应流   InputStream inputStream = con.getInputStream();   //将响应流转换成字符串   resultBuffer = new StringBuffer();   String line;   buffer = new BufferedReader(new InputStreamReader(inputStream, "GBK"));   while ((line = buffer.readLine()) != null) {    resultBuffer.append(line);   }   return resultBuffer.toString();  }catch(Exception e) {   e.printStackTrace();  }  return ""; } public static void main(String[] args) {  String url ="http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=120.79.75.96";  System.out.println(sendRequest(url)); }}

3. HttpClient

使用方便,我个人偏爱这种方式,但依赖于第三方jar包,相关maven依赖如下:

<!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient --><dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version></dependency
package httpClient;import java.io.IOException;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.commons.httpclient.params.HttpMethodParams;public class HttpClientHelper { public static String sendPost(String urlParam) throws HttpException, IOException {  // 创建httpClient实例对象  HttpClient httpClient = new HttpClient();  // 设置httpClient连接主机服务器超时时间:15000毫秒  httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);  // 创建post请求方法实例对象  PostMethod postMethod = new PostMethod(urlParam);  // 设置post请求超时时间  postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);  postMethod.addRequestHeader("Content-Type", "application/json");  httpClient.executeMethod(postMethod);  String result = postMethod.getResponseBodyAsString();  postMethod.releaseConnection();  return result; } public static String sendGet(String urlParam) throws HttpException, IOException {  // 创建httpClient实例对象  HttpClient httpClient = new HttpClient();  // 设置httpClient连接主机服务器超时时间:15000毫秒  httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);  // 创建GET请求方法实例对象  GetMethod getMethod = new GetMethod(urlParam);  // 设置post请求超时时间  getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);  getMethod.addRequestHeader("Content-Type", "application/json");  httpClient.executeMethod(getMethod);  String result = getMethod.getResponseBodyAsString();  getMethod.releaseConnection();  return result; } public static void main(String[] args) throws HttpException, IOException {  String url ="http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=120.79.75.96";  System.out.println(sendPost(url));  System.out.println(sendGet(url)); }}

4. Socket

使用JDK原生提供的net,无需其他jar包;

使用起来有点麻烦。

package socket;import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.URLEncoder; import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocketFactory; public class SocketForHttpTest {  private int port;  private String host;  private Socket socket;  private BufferedReader bufferedReader;  private BufferedWriter bufferedWriter;  public SocketForHttpTest(String host,int port) throws Exception{   this.host = host;   this.port = port;      // socket = new Socket(this.host, this.port);      socket = (SSLSocket)((SSLSocketFactory)SSLSocketFactory.getDefault()).createSocket(this.host, this.port);  }  public void sendGet() throws IOException{   //String requestUrlPath = "/z69183787/article/details/17580325";   String requestUrlPath = "/";     OutputStreamWriter streamWriter = new OutputStreamWriter(socket.getOutputStream());   bufferedWriter = new BufferedWriter(streamWriter);      bufferedWriter.write("GET " + requestUrlPath + " HTTP/1.1\r\n");   bufferedWriter.write("Host: " + this.host + "\r\n");   bufferedWriter.write("\r\n");   bufferedWriter.flush();   BufferedInputStream streamReader = new BufferedInputStream(socket.getInputStream());   bufferedReader = new BufferedReader(new InputStreamReader(streamReader, "utf-8"));   String line = null;   while((line = bufferedReader.readLine())!= null){    System.out.println(line);   }   bufferedReader.close();   bufferedWriter.close();   socket.close();  }  public void sendPost() throws IOException{    String path = "/";    String data = URLEncoder.encode("name", "utf-8") + "=" + URLEncoder.encode("张三", "utf-8") + "&" +       URLEncoder.encode("age", "utf-8") + "=" + URLEncoder.encode("32", "utf-8");    // String data = "name=zhigang_jia";    System.out.println(">>>>>>>>>>>>>>>>>>>>>"+data);       OutputStreamWriter streamWriter = new OutputStreamWriter(socket.getOutputStream(), "utf-8");    bufferedWriter = new BufferedWriter(streamWriter);        bufferedWriter.write("POST " + path + " HTTP/1.1\r\n");    bufferedWriter.write("Host: " + this.host + "\r\n");    bufferedWriter.write("Content-Length: " + data.length() + "\r\n");    bufferedWriter.write("Content-Type: application/x-www-form-urlencoded\r\n");    bufferedWriter.write("\r\n");    bufferedWriter.write(data);    bufferedWriter.write("\r\n");    bufferedWriter.flush();    BufferedInputStream streamReader = new BufferedInputStream(socket.getInputStream());    bufferedReader = new BufferedReader(new InputStreamReader(streamReader, "utf-8"));    String line = null;    while((line = bufferedReader.readLine())!= null)    {     System.out.println(line);    }    bufferedReader.close();    bufferedWriter.close();    socket.close();  }  public static void main(String[] args) throws Exception {      //SocketForHttpTest forHttpTest = new SocketForHttpTest("www.baidu.com", 80);      SocketForHttpTest forHttpTest = new SocketForHttpTest("www.baidu.com", 443);   try {    forHttpTest.sendGet();   // forHttpTest.sendPost();   } catch (IOException e) {    e.printStackTrace();   }  } }

看完上述内容,你们掌握在JAVA中发送HTTP请求的方式有哪些的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

在JAVA中发送HTTP请求的方式有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

在JAVA中发送HTTP请求的方式有哪些

在JAVA中发送HTTP请求的方式有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式
2023-06-06

JAVA发送HTTP请求的方式有哪些

这篇文章主要介绍“JAVA发送HTTP请求的方式有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JAVA发送HTTP请求的方式有哪些”文章能帮助大家解决问题。1. HttpURLConnecti
2023-07-05

java发送http get请求的两种方式

长话短说,废话不说一、第一种方式,通过HttpClient方式,代码如下:public static String httpGet(String url, String charset) throws HttpException, IO
2023-05-31

利用java实现发送http或get请求的方法有哪些

这篇文章将为大家详细讲解有关利用java实现发送http或get请求的方法有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、第一种方式,通过HttpClient方式,代码如下:publ
2023-05-31

JAVA发送HTTP请求的多种方式详细总结

目前做项目中有一个需求是这样的,需要通过Java发送url请求,查看该url是否有效,这时我们可以通过获取状态码来判断,下面这篇文章主要给大家介绍了关于JAVA发送HTTP请求的多种方式总结的相关资料,需要的朋友可以参考下
2023-01-30

Node发起HTTP请求的方法有哪些

本篇内容主要讲解“Node发起HTTP请求的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node发起HTTP请求的方法有哪些”吧!正文Node.js HTTPS ModuleNode
2023-07-04

php发送get请求的方法有哪些

PHP发送GET请求的方法有以下几种:1. 使用file_get_contents函数:可以通过该函数向指定的URL发送GET请求,并返回请求的结果。例如:```php$response = file_get_contents('http:
2023-08-11

java请求接口的方式有哪些

Java请求接口的方式有以下几种:1. 使用HttpURLConnection:使用Java标准库中的HttpURLConnection类来发送HTTP请求并获取响应。2. 使用Apache HttpClient:Apache HttpCl
2023-10-25

图片的HTTP请求方法有哪些

这篇文章主要介绍“图片的HTTP请求方法有哪些”,在日常操作中,相信很多人在图片的HTTP请求方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”图片的HTTP请求方法有哪些”的疑惑有所帮助!接下来,请跟
2023-06-08

实现HTTP请求的方法有哪些

本篇文章为大家展示了实现HTTP请求的方法有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、HTTP的请求与响应HTTP协议(HyperText Transfer Protocol,超文本传输
2023-05-31

Java中Https发送POST请求的方法

这篇文章主要介绍Java中Https发送POST请求的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分
2023-06-15

JAVA中的HTTP请求怎么利用HttpClient实现发送

JAVA中的HTTP请求怎么利用HttpClient实现发送?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。HttpClient介绍HttpClient 不是一个
2023-05-31

ajax的请求方式有哪些

Ajax的请求方式有以下几种:1. GET:使用GET方法发送请求,获取指定资源。这是最常用的请求方式之一。例如:`$.get(url, data, success, dataType)`2. POST:使用POST方法发送请求,向指定资源
2023-09-13

php中的常用HTTP请求头有哪些

本篇内容主要讲解“php中的常用HTTP请求头有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php中的常用HTTP请求头有哪些”吧!在PHP中,HTTP请求头是指在发送HTTP请求时,添加
2023-07-05

在java项目中使用java.net.URLConnection实现一个发送HTTP请求功能

这期内容当中小编将会给大家带来有关在java项目中使用java.net.URLConnection实现一个发送HTTP请求功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、前言如何通过Java发送HT
2023-05-31

详解Android中使用OkHttp发送HTTP的post请求的方法

HTTP POST 和 PUT 请求可以包含要提交的内容。只需要在创建 Request 对象时,通过 post 和 put 方法来指定要提交的内容即可。 HTTP POST 请求的基本示例:public class PostString {
2022-06-06

URLConnection发送HTTP请求的方法_动力节点Java学院整理

如何通过Java发送HTTP请求,通俗点讲,如何通过Java(模拟浏览器)发送HTTP请求。Java有原生的API可用于发送HTTP请求,即java.net.URL、java.net.URLConnection,这些API很好用、很常用,但
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录