Java开发中怎么向URL地址发送Http请求,根据返回的状态码判断成功失败?
Java开发中在Action读取到数据库中的URL地址,怎么向URL地址发送Http请求,根据返回的状态码判断成功失败?代码如下:publicvoidMyJob(){Li...
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请求来判断连接成功还是失败?
}
} 展开
代码如下:
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请求来判断连接成功还是失败?
}
} 展开
4个回答
展开全部
数据库服务器上不一定开了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);
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);
展开全部
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解析就可以了
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解析就可以了
追问
有没有详细代码例子?最好有注释,谢谢了
追答
呵呵,这已经是很详细的代码了,哪如果具体的不会局部百度一下搜搜,应该不难
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果list.size()==0的话,应该是连
接失败了,不知道我的理解是否正
确,仅供参考。
接失败了,不知道我的理解是否正
确,仅供参考。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |