Java开发中怎么向URL地址发送Http请求,根据返回的状态码判断成功失败?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java开发中怎么向URL地址发送Http请求,根据返回的状态码判断成功失败?相关的知识,希望对你有一定的参考价值。

Java开发中在Action读取到数据库中的URL地址,怎么向URL地址发送Http请求,根据返回的状态码判断成功失败?
代码如下:
public void MyJob()
List list = systemMonitoringManager.getSystemMonitoringList(systemMonitoringVO);
for(int i=0;i<list.size();i++)
SystemMonitoringVO vo = (SystemMonitoringVO)list.get(i);
String Url = vo.getUrl();
//怎么发送Http请求来判断连接成功还是失败?

数据库服务器上不一定开了80端口呀,个人感觉判断网络是否通,还是使用Ping命令的好,如下:
String ip = "127.0.0.1"; // 使用正则,从Url中解析出数据库IP地址
System.out.println("ip = " + ip);
Process process = Runtime.getRuntime().exec("ping " + ip); // 执行Ping命令
DataInputStream dis = new DataInputStream(process.getInputStream());

byte[] buffer = new byte[1024 * 1000];
int len = dis.read(buffer);
StringBuffer sb = new StringBuffer();
while (len > 0)
sb.append(new String(buffer, 0, len));
len = dis.read(buffer);

System.out.println("ping result = " + sb.toString());
// 从Ping的结果中,解析出丢失率
Pattern p = Pattern.compile("(?<=\\().*%");
Matcher m = p.matcher(sb.toString());
boolean flag = true; // 网络是否通
if (m.find())
String str = m.group();
System.out.println("lost = " + str);
// 如果丢失率等于100%,则说明网络不通
flag = str.equals("100%") ? false : true;

System.out.println("the net is " + flag);
参考技术A 1.用 HttpURLConnection urlConnection创建连接
2.
byte[] b = requestMessage.getBytes("utf-8");
OutputStream out = urlConnection.getOutputStream();
out.write(b);
out.flush();
out.close();
3.OutputStream 发送出去
4.用InputStream接收
5.
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
while ((len = in.read(buffer)) > 0)
outstream.write(buffer, 0, len);
outstream.close();
byte[] bRes = outstream.toByteArray()
判断如果
bRes == null || bRes.length == 0

则连接超时

你指的是如果连接响应如果没有异常证明连接上了,如果想取请求的url内容就用把bRes解析就可以了追问

有没有详细代码例子?最好有注释,谢谢了

追答

呵呵,这已经是很详细的代码了,哪如果具体的不会局部百度一下搜搜,应该不难

本回答被提问者和网友采纳
参考技术B 如果list.size()==0的话,应该是连
接失败了,不知道我的理解是否正
确,仅供参考。
参考技术C 在服务端返回状态码

HTTP协议HTTP请求方法

对于HTTP请求报文,下面介绍一些需要重点了解的内容。
首先,在请求行中比较重要的是请求方法。请求方法用于客户端向服务端传送数据,主要有Get和Post两种方法。
Get方法通过URL向服务器发送数据,所以使用Get方法传递的数据会显示在浏览器地址栏中。由于浏览器对URL的长度会有限制,所以Get方法通常用于向服务器发送少量数据。比如请求头“GET index.php?id=1 HTTP/1.1”,表示客户端请求访问服务器的index.php页面,并用Get方法向服务器传递数据“id=1”,id是在服务器端事先定义好的一个参数,数值1就是客户端所传送的数据。如果要同时传递多个参数,参数之间以&分隔,如id=1&name=admin。
Post方法将要发送的数据放在HTTP请求报文的正文中,所以传递的数据不会显示在浏览器地址栏中。可以用于向服务器发送大量数据,如用户登录、上传文件、提交留言等都会使用Post方法。典型的Post请求报文如下图所示。
技术分享图片

例题1 BugKu web基础$_GET
链接:http://123.206.87.240:8002/get/
点开链接之后,直接给出了代码,用get方法接收what参数的值,只要what的值为flag,那么就可以得到flag。

$what=$_GET[‘what‘];
 echo $what;
 if($what==‘flag‘)
 echo ‘flag{****}‘;

直接通过地址栏向服务端发送数据即可。
技术分享图片

例题2 BugKu Web基础$_POST
链接:http://123.206.87.240:8002/post/
与上一题类似,用post方法接收what参数的值。

$what=$_POST[‘what‘];
echo $what;
if($what==‘flag‘)
echo ‘flag{****}‘;

这里就涉及到如何通过post方法向服务端发送数据。推荐在firefox浏览器中安装hackbar插件,通过设置项中的“附加组件”搜索并安装即可。
安装完成后,通过查看元素或F12都可以调出hackbar。然后载入链接,并发送post数据即可。
技术分享图片

以上是关于Java开发中怎么向URL地址发送Http请求,根据返回的状态码判断成功失败?的主要内容,如果未能解决你的问题,请参考以下文章

Ajax向服务器发送请求和接收返回的信息

Java sendPost请求方法如何加入参数?

Java中发送http的getpost请求

Java代码发送Http请求

Jmeter(一)压测入门及结果报告分析

在ExpressJS中,怎么发送请求到别的服务器请求数据