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

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

URLConnection类常用方法说明如下:

voidconnect()

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

voidsetRequestProperty(Stringkey,Stringvalue)

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

voidsetReadTimeout(inttimeout)

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

voidsetConnectTimeout(inttimeout)

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

InputStreamgetInputStream()

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

HttpURLConnection类常用方法说明如下:

intgetResponseCode()

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

voidsetRequestMethod(Stringmethod)

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

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

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

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

importjava.io.BufferedReader;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.InputStreamReader;

importjava.net.HttpURLConnection;

importjava.net.MalformedURLException;

importjava.net.URL;

publicclassURLConnectionTest{

publicstaticvoidmain(String[]args){

HttpURLConnectionconnection=null;

InputStreamstream=null;

BufferedReaderreader=null;

Stringserver=“url&opone=30&optwo=60”;

try{

//实例化URL对象

URLurl=newURL(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=newBufferedReader(newInputStreamReader(stream,“UTF-8”));

//实例化字符串生成器

StringBuffersbf=newStringBuffer();

Stringtemp=null;

//从输入流读取数据

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

sbf.append(temp);

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

}

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

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

}

}catch(MalformedURLExceptione){

e.printStackTrace();

}catch(IOExceptione){

e.printStackTrace();

}finally{

//关闭资源

if(null!=reader){

try{

reader.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

if(null!=stream){

try{

stream.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

//关闭远程连接

connection.disconnect();

}

}

}

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

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

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

http java编程_Java编程:发送HTTP请求到服务器相关推荐

  1. java 常见几种发送http请求案例

    java 常见几种发送http请求案例 直接换成CloseableHttpClient还不行,需要这样使用CloseableHttpClient httpClient = HttpClientBuil ...

  2. java 服务器 http请求_Java网络编程——发送HTTP请求到服务器

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

  3. 网络编程-JavaScript中发送网络请求汇总

    文章目录 1.前后端分离优势 2.HTTP协议的解析 2.1 HTTP的介绍 2.2 HTTP的组成 2.3 HTTP的版本 2.4 HTTP请求方式 2.5 HTTP请求头字段 2.6 HTTP响应 ...

  4. java取消_java – 取消之前的请求

    对于每个请求,都会发生很多计算.平均而言,回复大约需要10分钟来处理.现在同时,如果用户发送新请求;以前的请求绝对没有意义继续下去. 所以我编写了一个代码,我基本上打断了执行它的前一个线程.在tomc ...

  5. java httpost阻塞_httpclient发送get请求阻塞?

    堆栈信息 某个线程被一个任务一直占用,查看堆栈信息发现是在使用httpclient发送get请求时阻塞了,具体堆栈信息如上,求教 贴上堆栈中打印类的相关代码: httpclientpool(自己写的一 ...

  6. java 大整数编程_Java编程--RSA算法中的大整数运算

    Java编程–RSA算法中的大整数运算 RSA原理浅析 RSA是利用陷门单向函数实现的,其安全基础依赖于大整数的分解问题的难解性 算法过程 为了加深对RSA算法的了解,接下来通过简单的一个例子来分析一 ...

  7. java学习_Java编程学习难不难 怎样才能快速入门Java

    Java编程学习难不难?怎样才能快速入门Java?对于想要加入IT行业的人来说,Java是一个不错的选择,不仅人才需求大,就业薪资也非常不错.许多人都非常看好Java发展前景,接下来千锋小编就给大家介 ...

  8. java编程_Java编程和C语言的比较

    很多人都拿Java编程和c语言相比较,那么今天小编就来先说说个人理解吧,新手学习Java很简单,上手也很容易,只需要会拼音就可以,简单而且没有门槛,而c语言学习成本高,更需要投入较大的精力,才能有一个 ...

  9. java 采样_Java编程实现beta分布的采样或抽样实例代码

    本文研究的主要是Java编程实现beta分布的采样或抽样,具体如下. 本文将使用math3提供的工具包,对beta分布进行采样.如下程序是对alpha=81,beta=219的beta分布函数,进行抽 ...

最新文章

  1. 如何衡量产品的用户体验?
  2. 点云处理关键算法剖析及实现(涉及滤波、分割、配准、识别、重建)
  3. Kaggle知识点:数据分析EDA
  4. Leetcode题库 136.只出现一次的数字(异或 C实现)
  5. 如何循序渐进的学习javaScript呢,请听我慢慢道来!
  6. 做大厂程序员是一种怎样的体验?这四位“百度程序员”说出了自己的看法!
  7. javascript Node对象
  8. .describe() python_Stataamp;Python | 分别实现多元线性回归
  9. Yii2如何用migrate快速建表
  10. readelf 和 objdump 例子详解及区别 (ELF文件说明)
  11. springboot基于webrtc和janus的视频会议流程图
  12. Java FTP下载文件
  13. 2018年​最酷的APP手机UI设计趋势
  14. matlab mafdr,matlab FDR校正
  15. 浅谈BCrypt密码加解密的使用
  16. R语言做面板VAR例子
  17. 在xp上安装linux只需要对安装盘符格式为fat32就行了吗,从硬盘安装在XP下装红旗linux双系统...
  18. linux动态桌面插件,Ubuntu下使用动画壁纸 LiveWallpaper 0.3
  19. sap假脱机打印机设置_SAP打印机设置
  20. ARM64平台下WFE和SEV相关指令解析

热门文章

  1. 一个1-23二进制搭建方法
  2. 关于使用vue.js的模板渲染时出现一瞬间的设置的模板的解决方案
  3. web的前端和后端之分
  4. MATLAB中求最大/最小值max/min函数
  5. HTML作业-商城网页
  6. 实验八 页面置换模拟程序设计
  7. html中td 的值不换行符,解决英文字母在td标签中不换行的问题
  8. keepalived和zookeeper对比
  9. 出生年月日的html语句,出生年月日五行查询表
  10. Navicat因导入的sql文件中时间数据类型有参数而报错的原因(例:datetime(3))