0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Java编程:发送HTTP请求到服务器

如意 来源:百家号 作者: 米粒教育 2020-07-01 09:59 次阅读

Java程序需要向服务器发送请求或读取服务器数据时,使用URLConnection类是比较好的选择。URLConnection类封装了与服务器互动操作的方法,通过它可以建立与服务器的远程连接,检查服务器资源的属性,向服务器发送请求并接收服务器返回的数据。

Java编程:发送HTTP请求到服务器

URLConnection类是一个抽象类,它不能直接实例化为对象,但URL实例对象可以返回一个URLConnection类的子类对象。返回的子类对象与URL打开的网络资源采用的协议有关。如果是HTTP协议,URL实例对象会返回HttpURLConnection对象。如果是FTP协议,URL实例对象会返回FtpURLConnection对象。

URLConnection类常用方法说明如下:

void connect()

该方法用于与远程资源建立连接。如果尚未建立此连接,则打开指向此URL引用的资源链接。如果在连接已打开时调用connect方法(由值为true的connected字段指示),则忽略该调用。

void setRequestProperty(String key, String value)

该方法用于设置网络资源请求属性。Key参数为已知请求的关键字(例如,“Accept”),value是与key关联的值。

void setReadTimeout(int timeout)

该方法用于设置读取网络资源数据超时时间(以毫秒为单位)。

void setConnectTimeout(int timeout)

该方法用于设置连接网络资源的超时时间(以毫秒为单位)

InputStream getInputStream()

该方法用于返回从这个打开的连接读取的输入流。

HttpURLConnection类常用方法说明如下:

int getResponseCode()

该方法从HTTP响应消息获取状态代码。返回200表示请求响应成功,其它值表示请求响应失败。

void setRequestMethod(String method)

该方法设置HTTP请求方法之一:GET/POST/HEAD/OPTIONS/PUT/DELETE/TRACE。默认是GET。

案例1:建立URLConnectionTest类,连接远程服务器,向服务器发送服务请求,并接收服务器的请求响应数据。

该远程服务提供求两数和服务,客户端向该服务发送服务请求,并向该服务提交两个待求和的整数,该服务返回求和结果。

在ip包下新建URLConnectionTest类。代码如下:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

public class URLConnectionTest {

public static void main(String[] args) {

HttpURLConnection connection = null;

InputStream stream = null;

BufferedReader reader = null;

String server = “url&opone=30&optwo=60”;

try {

// 实例化URL对象

URL url = new URL(server);

// 通过URL对象打开一个连接,显示转换为httpURLConnection类

connection = (HttpURLConnection) url.openConnection();

// 设置连接方式:get

connection.setRequestMethod(“GET”);

// 设置连接远程服务的超时时间:15000毫秒

connection.setConnectTimeout(15000);

// 设置读取远程服务返回的数据时间:60000毫秒

connection.setReadTimeout(60000);

// 建立连接,发送请求

connection.connect();

// 通过connection连接,获取输入流

if (connection.getResponseCode() == 200) {

// 从打开的连接获取输入流,接收返回数据

stream = connection.getInputStream();

// 实例化BufferedReader对象,并指定字符集

reader = new BufferedReader(new InputStreamReader(stream, “UTF-8”));

// 实例化字符串生成器

StringBuffer sbf = new StringBuffer();

String temp = null;

// 从输入流读取数据

while ((temp = reader.readLine()) != null) {

sbf.append(temp);

sbf.append(“\r\n”);

}

// 返回内容输出到控制台

System.out.println(“远程服务返回的数据:” + sbf.toString());

}

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

// 关闭资源

if (null != reader) {

try {

reader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (null != stream) {

try {

stream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

// 关闭远程连接

connection.disconnect();

}

}

}

URLConnectionTest程序的主要功能是请求一个求两数和的远程服务,并向远程服务提交待求和的两个整数,远程服务计算两数的和,并将计算结果返回给程序,程序将计算结果输出到控制台。

程序使首先用URL对象定位和打开远程服务,并应用URL对象的openConnection()方法获取HttpURLConnection实例对象。然后应用HttpURLConnection实例对象分别设置远程服务的连接超时时间、服务响应超时时间、读取数据超时时间。再调用HttpURLConnection实例对象的connect()方法向远程服务发送请求,并调用HttpURLConnection实例对象的getResponseCode()方法判断远程服务是否响应成功,如果返回值是200,说明服务器响应成功。最后读取远程服务返回的数据,并将读取的数据输出到控制台。

程序执行结果如下图所示:

Java编程:发送HTTP请求到服务器

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9016

    浏览量

    85171
  • JAVA
    +关注

    关注

    19

    文章

    2957

    浏览量

    104539
  • HTTP
    +关注

    关注

    0

    文章

    501

    浏览量

    31053
收藏 人收藏

    评论

    相关推荐

    HTTP协议的运作方式及请求/响应的步骤

    基于HTTP的客户/服务器模式的信息交换过程它分四个过程建立连接、发送请求信息、发送响应信息、关闭连接。
    的头像 发表于 02-01 11:02 1305次阅读
    <b class='flag-5'>HTTP</b>协议的运作方式及<b class='flag-5'>请求</b>/响应的步骤

    HTTP客户端请求服务器FIN在读取所有数据之前

    1)PIC向http服务器发送请求2)服务器用数据响应,在PIC32堆栈缓冲区中PICThe数据的ack之后关闭连接,但在该堆栈迭代时关闭连
    发表于 09-23 07:01

    使用NodeMCU创建一个简单的HTTP服务器

    ,但当我停止发送一两分钟的请求时,服务器将以某种方式停止运行 . 这意味着,当我重新加载页面nodeMCU没有收到任何数据(并且不能返回任何数据) .a=0function receive(conn,pa...
    发表于 11-01 06:03

    如何通过http请求将值发送服务器

    我正在使用 nodemcu 创建一个网络服务器。我想通过 http 请求将值发送服务器。我已成功创建
    发表于 02-27 06:48

    ESP32 Web服务器可以向外部Rest API发起HTTP请求吗?

    我想知道以下是否可行...... 1)作为网络服务器运行的 ESP32 可以向外部 Rest API 发起/发出 HTTP 请求吗?2) 我是否需要同时将其设置为服务器和客户端,或者
    发表于 03-01 06:22

    ESP8266支持大文件以GET请求方式发送HTTP网络服务器

    ESP8266 支持大文件 [500KB] 以 GET 请求方式发送HTTP 网络服务器...?有可能如何编写代码来发送数据。任何示例代
    发表于 05-19 06:55

    GET如何才能请求多个服务器Masterslaves?

    大家好, \\*我是这个论坛的新人,所以我希望我 能在这里发帖另一个使用从我的主人(客户端)从属(服务器)的请求 GET但是我无法从我的主人建立多个
    发表于 05-30 09:03

    基于Java的游戏服务器开发技术体系详解

    由 peter dong 于 星期五, 2018-06-15 11:19 发表 一、游戏服务器编程语言的选择 所谓的游戏服务器编程语言其实有很多,基本上任何一种语言都可以作为游戏
    发表于 07-02 08:24 7285次阅读

    Java程序设计教程之Java WEB服务器编程的详细资料说明

    本文档详细介绍的是Java程序设计教程之Java WEB服务器编程的详细资料说明主要内容包括了:1 Java Web
    发表于 02-22 10:28 11次下载
    <b class='flag-5'>Java</b>程序设计教程之<b class='flag-5'>Java</b> WEB<b class='flag-5'>服务器</b>端<b class='flag-5'>编程</b>的详细资料说明

    单片机使用HTTP POST方式发送数据的资料和程序免费下载

    HTTP请求是依赖TCP的,也就是在单片机上面,我们一样可以使用,无非就是先发送一个http请求头,再
    发表于 07-18 17:38 38次下载
    单片机使用<b class='flag-5'>HTTP</b> POST方式<b class='flag-5'>发送</b>数据的资料和程序免费下载

    HTTP的曲折:网络请求层层封装和终端拆分

    服务器的地址进行查询,域服务器将要查询的域名的解析服务器地址返回给本地DNS,本地DNS去这里查询就OK了。 浏览拿到服务器的IP地址后,
    发表于 05-07 16:42 1283次阅读
    <b class='flag-5'>HTTP</b>的曲折:网络<b class='flag-5'>请求</b><b class='flag-5'>到</b>层层封装和终端拆分

    MCU没有响应服务器请求,NodeMCU HTTP服务器停止响应

    ,但当我停止发送一两分钟的请求时,服务器将以某种方式停止运行 . 这意味着,当我重新加载页面nodeMCU没有收到任何数据(并且不能返回任何数据) .a=0function receive(conn,pa...
    发表于 10-25 18:21 11次下载
    MCU没有响应<b class='flag-5'>服务器</b><b class='flag-5'>请求</b>,NodeMCU <b class='flag-5'>HTTP</b><b class='flag-5'>服务器</b>停止响应

    HTTP应用——上传(POST)数据服务器,从服务器下载(GET)文件报文

    前言HTTP协议是一个简单的请求-响应协议,它通常运行在TCP之上,传输端口一般为80。它指定了客户端可能发送服务器什么样的消息以及得到什么样的响应。
    发表于 12-06 11:21 7次下载
    <b class='flag-5'>HTTP</b>应用——上传(POST)数据<b class='flag-5'>到</b><b class='flag-5'>服务器</b>,从<b class='flag-5'>服务器</b>下载(GET)文件报文

    HTTP服务器项目实现介绍

    项目介绍 本项目实现的是一个HTTP服务器,项目中将会通过基本的网络套接字读取客户端发来的HTTP请求并进行分析,最终构建HTTP响应并返回
    的头像 发表于 11-08 16:54 901次阅读
    <b class='flag-5'>HTTP</b><b class='flag-5'>服务器</b>项目实现介绍

    使用NS1串口服务器HTTP模式上传服务器数据

    HTTP协议工作于客户端-服务端架构之上。浏览作为HTTP客户端通过URL向HTTP服务端即W
    的头像 发表于 08-30 12:36 268次阅读
    使用NS1串口<b class='flag-5'>服务器</b><b class='flag-5'>HTTP</b>模式上传<b class='flag-5'>服务器</b>数据