javahttp请求超时判断 javahttp请求超时判断 Java设置Http请求超时时间

Java设置Http请求超时时间

Java中可以使用HttpURLConnection来请求WEB资源。

javahttp请求超时判断 javahttp请求超时判断 Java设置Http请求超时时间

HttpURLConnection对象不能直接构造,需要通过URL.openConnection()来获得HttpURLConnection对象,示例代码如下:

String szUrl = "http://www.ee2ee.com/";

URL url = new URL(szUrl);

HttpURLConnection urlCon = (HttpURLConnection)url.openConnection(); HttpURLConnection是基于HTTP协议的,其底层通过socket通信实现。如果不设置超时(timeout),在网络异常的情况下,可能会导致程序僵死而不继续往下执行。可以通过以下两个语句来设置相应的超时:

System.setProperty("sun.net.client.defaultConnectTimeout", 超时毫秒数字符串);

System.setProperty("sun.net.client.defaultReadTimeout", 超时毫秒数字符串);

其中: sun.net.client.defaultConnectTimeout:连接主机的超时时间(单位:毫秒)

sun.net.client.defaultReadTimeout:从主机读取数据的超时时间(单位:毫秒)

例如:

System.setProperty("sun.net.client.defaultConnectTimeout", "30000"); System.setProperty("sun.net.client.defaultReadTimeout", "30000"); JDK 1.5以前的版本,只能通过设置这两个系统属性来控制网络超时。在1.5中,还可以使用HttpURLConnection的父类URLConnection的以下两个方法:

setConnectTimeout:设置连接主机超时(单位:毫秒)

setReadTimeout:设置从主机读取数据超时(单位:毫秒)

例如:

HttpURLConnection urlCon = (HttpURLConnection)url.openConnection(); urlCon.setConnectTimeout(30000);

urlCon.setReadTimeout(30000);

需要注意的是,笔者在JDK1.4.2环境下,发现在设置了defaultReadTimeout的情况下,如果发生网络超时,HttpURLConnection会自动重新提交一次请求,出现一次请求调用,请求服务器两次的问题(Trouble)。我认为这是JDK1.4.2的一个bug。在JDK1.5.0中,此问题已得到解决,不存在自动重发现象。 import java.io.*;

import java.net.*;

/**

* @author chenzhimin

*

*/

public class TestUrl {

/**

* 只能用户HTTP协议

* @param photoUrl

* @param fileName

* @return

*/

public boolean saveUrlAs(String photoUrl, String fileName) {

try {

URL url = new URL(photoUrl);

HttpURLConnection connection = (HttpURLConnection) url

.openConnection();

DataInputStream in = new DataInputStream(connection

.getInputStream());

DataOutputStream out = new DataOutputStream(new FileOutputStream( fileName));

byte[] buffer = new byte[4096];

int count = 0;

while ((count = in.read(buffer)) > 0) {

out.write(buffer, 0, count);

}

out.close();

in.close();

return true;

} catch (Exception e) {

System.out.println(e);

return false;

}

}

/**

* 兼容HTTP和FTP协议

* @param urlString

* @return

*/

public String getDocumentAt(String urlString) {

StringBuffer document = new StringBuffer();

try {

URL url = new URL(urlString);

URLConnection conn = url.openConnection();

BufferedReader reader = new BufferedReader(new InputStreamReader(

conn.getInputStream()));

String line = null;

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

document.append(line + "n");

}

reader.close();

} catch (MalformedURLException e) {

System.out.println("Unable to connect to URL: " + urlString);

} catch (IOException e) {

System.out.println("IOException when connecting to URL: "

+ urlString);

}

return document.toString();

}

/**

*

* @param args

*/

public static void main(String[] args) {

TestUrl test = new TestUrl();

String photoUrl = "http://www.musichy.com/share/admin//20061120060438448.jpg"; String fileName = photoUrl.substring(photoUrl.lastIndexOf("/"));

String filePath = "f:/bak/";

boolean flag = test.saveUrlAs(photoUrl, filePath + fileName);

System.out.println("Run ok!n Get URL file " + flag);

}

}


百度搜索“爱华网”,专业资料、生活学习,尽在爱华网!  

爱华网本文地址 » http://www.aihuau.com/a/318651/417695044064.html

更多阅读

贵州茅台酒怎样判断真假? 贵州茅台酒真假查询

贵州茅台酒怎样判断真假?——简介茅台酒为中国名酒,在国内外均享有盛名。茅台酒厂始建于 1704年,在贵州省仁怀县茅台镇。就现在市面上的茅台酒,如何去辨别它的真伪。我们知道的方法有看瓶子、瓶盖,品尝口感等。还有可以打电话查询,可我听

教你如何预测生男生女 白醋判断生男生女

教你如何预测生男生女——简介生男生女预测永远都是热门话题,大家都对即将出世的小生命充满好奇,虽然现在科技发达了,生男生女可以通过B超准确判断,但是更多的时候我们乐于利用很多传说中的小方法,预测生男生女的花样层出不穷:从生男生女

护肤小知识:如何判断自己的肤质

人的皮肤大体上可以分为干性、中性、油性、混合型和敏感型。看看各种肤质有什么特点,小编教各位MM怎样判断自己的肤质,让你的美容护肤小知识越来越强大。护肤小知识:如何判断自己的肤质——步骤/方法护肤小知识:如何判断自己的肤质 1、

教你判断新浪微博中奖是真的吗? 有利网中奖是真的吗

教你判断新浪微博中奖是真的吗?——简介近年来诈骗分子利用新浪微博页面,利用微博留言进行诈骗,发布新浪微博中奖信息诱人上当,骗取“中奖费”的骗局越来越多。相信不少微博用户都收到了类似的私信或者评论。下面由我来教大家如何判断新

声明:《javahttp请求超时判断 javahttp请求超时判断 Java设置Http请求超时时间》为网友橙色女招待分享!如侵犯到您的合法权益请联系我们删除