使用浏览器访问一个url能正常访问,但是通过java httpclient请求时却总是超时,是怎么回事啊?
publicMap<String,Object>judge(Modelmodel,StringdeviceIpPort){Map<String,Object>map=Ma...
public Map<String, Object> judge(Model model, String deviceIpPort) {
Map<String, Object> map = Maps.newHashMap();
// 创建HttpClientBuilder
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
// HttpClient
CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(timeOut).setConnectTimeout(timeOut).build();// 设置请求和传输超时时间
String url = "http://" + deviceIpPort;
// 获取页面点击时候的URL
HttpPost httppost = new HttpPost(url);
httppost.setConfig(requestConfig);
try {
// 执行get请求
HttpResponse httpResponse = closeableHttpClient.execute(httppost);
// 获取响应消息实体
HttpEntity entity = httpResponse.getEntity();
// 响应状态
System.out.println("status:" + httpResponse.getStatusLine().getStatusCode()); // 得到http响应结果的状态代码
// 判断响应实体是否为空
if (httpResponse.getStatusLine()
.getStatusCode() == HttpStatus.SC_OK ) {
map.put("result", true);
map.put("msg", deviceIpPort+"登录成功");
System.out.println("contentEncoding:"
+ entity.getContentEncoding());
System.out.println("response content:"
+ EntityUtils.toString(entity));
}
} catch (Exception e) {
map.put("result", false);
map.put("msg", "登录失败,当前设备不在线或者网络不通");
log.error("VideoTimeOutRestController.judge",e);
} finally {
try {
// 关闭流并释放资源
closeableHttpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return map;
}
就是有的IP地址在公司的局域网下可以访问 但是有的不可以访问 响应超时 URL在页面都是可以直接登录的 也没有设置代理 求大神解决办法啊 展开
Map<String, Object> map = Maps.newHashMap();
// 创建HttpClientBuilder
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
// HttpClient
CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(timeOut).setConnectTimeout(timeOut).build();// 设置请求和传输超时时间
String url = "http://" + deviceIpPort;
// 获取页面点击时候的URL
HttpPost httppost = new HttpPost(url);
httppost.setConfig(requestConfig);
try {
// 执行get请求
HttpResponse httpResponse = closeableHttpClient.execute(httppost);
// 获取响应消息实体
HttpEntity entity = httpResponse.getEntity();
// 响应状态
System.out.println("status:" + httpResponse.getStatusLine().getStatusCode()); // 得到http响应结果的状态代码
// 判断响应实体是否为空
if (httpResponse.getStatusLine()
.getStatusCode() == HttpStatus.SC_OK ) {
map.put("result", true);
map.put("msg", deviceIpPort+"登录成功");
System.out.println("contentEncoding:"
+ entity.getContentEncoding());
System.out.println("response content:"
+ EntityUtils.toString(entity));
}
} catch (Exception e) {
map.put("result", false);
map.put("msg", "登录失败,当前设备不在线或者网络不通");
log.error("VideoTimeOutRestController.judge",e);
} finally {
try {
// 关闭流并释放资源
closeableHttpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return map;
}
就是有的IP地址在公司的局域网下可以访问 但是有的不可以访问 响应超时 URL在页面都是可以直接登录的 也没有设置代理 求大神解决办法啊 展开
3个回答
2016-12-07 · 知道合伙人软件行家
关注
展开全部
如果在局域网可以访问那说明同局域网都是可以访问的, 检查一下你电脑是否开启了防火墙, 开启相关端口, 如果是超时了那么检查两边的网络是否正常, 能否ping通
追问
嗯,我已经检查了网络原因:url直接访问都是可以的,然后可以ping通,Telnet端口也是通的,但是就是有部分url在httpclient执行post请求的时候,是访问超时的。麻烦大神,请问这样是什么情况呢?
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询