广告
返回顶部
首页 > 资讯 > 精选 >Java中出现HTTP请求超时如何处理
  • 480
分享到

Java中出现HTTP请求超时如何处理

2023-06-14 09:06:06 480人浏览 泡泡鱼
摘要

这篇文章给大家介绍Java中出现Http请求超时如何处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在发送POST或GET请求时,返回超时异常处理办法:捕获 SocketTimeoutException | Conn

这篇文章给大家介绍Java中出现Http请求超时如何处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

在发送POST或GET请求时,返回超时异常处理办法:

捕获 SocketTimeoutException | ConnectTimeoutException | ConnectionPoolTimeout 异常

三种异常说明:

SocketTimeoutException:是Java包下抛出的异常,这定义了Socket读数据的超时时间,即从server获取响应数据须要等待的时间;当读取或者接收Socket超时会抛出SocketTimeoutException。

ConnectTimeoutException:是Apache的HttpClient包抛出的超时异常,定义了通过网络与server建立连接的超时时间,Httpclient包中通过一个异步线程去创建与server的socket连接,这就是该socket连接的超时时;

当连接httpserver或者等待HttpConnectionManager管理的一个有效连接超时出错会抛出ConnectionTimeoutException。

ConnectionPoolTimeout:也是Apache的HttpClient包抛出的超时异常,定义了从 ConnectionManager 管理的连接池中取出连接的超时时间;出错会抛出 ConnectionPoolTimeoutException。

总结

SocketTimeoutException异常是一个通用的异常,无论是用原生的HTTP请求,还是用Apache下的HttpClient包,在抛出的异常中都需要捕获 SocketTimeoutException 异常。

例:

public static String doGet(String url, Object params, String contentType) { try { return HttpUtils.doGetSend(url, params, contentType); } catch (SocketTimeoutException | ConnectTimeoutException e) { e.printStackTrace(); System.out.println("请求连接超时:" + e.getMessage()); } catch (IOException e) { e.printStackTrace(); System.out.println("请求异常,异常信息:" + e.getMessage()); } catch (Exception e) { e.printStackTrace(); } return null;}

补充:java 发送http请求(连接超时处理)

业务背景:

项目跟第三方公司对接。

业务描述:

出于数据安全考虑,需要从服务器发送请求,来调用第三方公司提供的接口。但是该场景是销售类型,响应时间必须够快,那么就要设置响应的超时处理。

不然让客户看着圈圈在那里转半天,谁买?

项目架构

jdk1.7

spring4.2.9

详细内容:

CloseableHttpClient httpclient = HttpClients.createDefault();try {   HttpPost httpPost = new HttpPost(要访问的URL); //配置超时 RequestConfig requestConfig = RequestConfig.custom()    .setConnectTimeout(5000).setConnectionRequestTimeout(5000)    .setSocketTimeout(5000).build();   httpPost.setConfig(requestConfig);   //设置post请求参数 List<NameValuePair> nvps = new ArrayList<NameValuePair>();  nvps.add(new BasicNameValuePair("attr1", 参数值1));  nvps.add(new BasicNameValuePair("attr2", 参数值2)); nvps.add(new BasicNameValuePair("attr3", 参数值3)); ……  httpPost.setEntity(new UrlEncodedFORMEntity(nvps));    //执行post请求 CloseableHttpResponse response = httpclient.execute(httpPost);   // 判断网络连接状态码是否正常(0--200都数正常)      if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){        //获取响应实体       responseMessage = EntityUtils.toString(response.getEntity(),"utf-8");        System.out.println(responseMessage);        if(responseMessage!=null && !"".equals(responseMessage)){         String data = new String(AESUtil.decrypt(Base64.decode(responseMessage), key),"UTF-8");               String msg = translate_PRE(data,trans_type,transNo);      result.put("msg", msg);        }              }else{       System.out.println("请求未成功响应: "+ response.getStatusLine());            }  } catch (ConnectTimeoutException e) { System.out.println(api_type+"请求超时");   } catch (ClientProtocolException e) { System.out.println("请求失败");  } catch (Exception e) { e.printStackTrace();  } finally { //释放连接 try {       if(httpclient!=null){       httpclient.close();       }      } catch (IOException e) {     System.out.println(api_type+"连接无法关闭");      } } .setConnectTimeout(5000).setConnectionRequestTimeout(5000)    .setSocketTimeout(5000).build();   httpPost.setConfig(requestConfig);   //设置post请求参数 List<NameValuePair> nvps = new ArrayList<NameValuePair>();  nvps.add(new BasicNameValuePair("attr1", 参数值1));  nvps.add(new BasicNameValuePair("attr2", 参数值2)); nvps.add(new BasicNameValuePair("attr3", 参数值3)); ……  httpPost.setEntity(new UrlEncodedFormEntity(nvps));    //执行post请求 CloseableHttpResponse response = httpclient.execute(httpPost);   // 判断网络连接状态码是否正常(0--200都数正常)      if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){        //获取响应实体       responseMessage = EntityUtils.toString(response.getEntity(),"utf-8");        System.out.println(responseMessage);        if(responseMessage!=null && !"".equals(responseMessage)){         String data = new String(AESUtil.decrypt(Base64.decode(responseMessage), key),"UTF-8");               String msg = translate_PRE(data,trans_type,transNo);      result.put("msg", msg);        }              }else{       System.out.println("请求未成功响应: "+ response.getStatusLine());            }  } catch (ConnectTimeoutException e) { System.out.println(api_type+"请求超时");   } catch (ClientProtocolException e) { System.out.println("请求失败");  } catch (Exception e) { e.printStackTrace();  } finally { //释放连接 try {       if(httpclient!=null){       httpclient.close();       }      } catch (IOException e) {     System.out.println(api_type+"连接无法关闭");      } }

关于Java中出现HTTP请求超时如何处理就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Java中出现HTTP请求超时如何处理

本文链接: https://www.lsjlt.com/news/269407.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中出现HTTP请求超时如何处理
    这篇文章给大家介绍Java中出现HTTP请求超时如何处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在发送POST或GET请求时,返回超时异常处理办法:捕获 SocketTimeoutException | Conn...
    99+
    2023-06-14
  • 解决Java处理HTTP请求超时的问题
    在发送POST或GET请求时,返回超时异常处理办法: 捕获 SocketTimeoutException | ConnectTimeoutException | Connectio...
    99+
    2022-11-12
  • Angular如何通过HTTP Interceptor实现HTTP请求超时监控
    这篇文章主要介绍“Angular如何通过HTTP Interceptor实现HTTP请求超时监控”,在日常操作中,相信很多人在Angular如何通过HTTP Interceptor实现HTTP请求超时监控问题上存在疑惑,小编查阅了各式资料,...
    99+
    2023-07-02
  • java中http请求之restTemplate配置超时时间(亲测有用!)
    问题:http请求发起后接收不到返回数据!!!【测试环境没出问题,发到正式环境就有问题】 项目中通过restTemplate发起请求: log.info("请求入参:{}",JSON.toJSONString(reques...
    99+
    2023-09-06
    java http servlet
  • Ngnix如何处理http请求
    这篇文章主要为大家展示了“Ngnix如何处理http请求”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ngnix如何处理http请求”这篇文章吧。nginx处理http的请求是nginx最重要的...
    99+
    2023-06-27
  • PHP中如何处理HTTP请求错误?
    在Web开发中,HTTP请求错误是时常会碰到的问题。可能是接口请求超时、参数传递错误、网络连接不正常等等。在PHP中,我们可以通过各种方法处理这些HTTP请求错误。下面就来具体探讨一下。一、使用try…catch语句使用try…catch语...
    99+
    2023-12-09
    Http请求 PHP 错误处理
  • 如何在Ajax中处理请求超时与网络异常
    今天就跟大家聊聊有关如何在Ajax中处理请求超时与网络异常,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。当浏览器请求超时或者网络异常的时候,我们程序需要做出什么处理和反应呢?ps:代...
    99+
    2023-06-15
  • HTTP协议中的请求和响应,Java中如何处理?
    HTTP协议是一种应用层协议,它是客户端和服务器之间传输数据的基础。HTTP协议的通信过程中,客户端向服务器发送请求,服务器接收请求并返回响应。在Java中,我们可以通过一些类库和框架来处理HTTP请求和响应。 一、HTTP协议中的请求和...
    99+
    2023-06-14
    http numpy 索引
  • Java中的HTTP请求如何进行自然语言处理?
    随着人工智能技术的不断发展,自然语言处理(NLP)在各个领域中得到了广泛应用。在Java中,通过HTTP请求进行NLP处理也成为了一种常见的方式。本文将介绍如何在Java中使用HTTP请求进行自然语言处理,并提供相关的演示代码。 一、HT...
    99+
    2023-09-27
    http 自然语言处理 编程算法
  • Android中HTTP请求中文出现乱码如何解决
    Android中HTTP请求中文出现乱码如何解决,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android中HTTP请求中文乱码解决办法 编码参数List<N...
    99+
    2023-05-30
    android http
  • Go语言实现请求超时处理的方法总结
    目录1. 简介2. 问题引入3. timer的实现方案3.1 timer的基本介绍3.2 timer实现超时控制3.3 对问题的解决4.timetCtx的实现方案4.1 timerC...
    99+
    2023-05-18
    Go语言请求超时处理方法 Go语言 超时处理方法 Go语言 超时处理
  • 如何处理Go语言中的并发网络请求超时问题
    在Go语言中处理并发网络请求超时问题,可以使用`context`包来实现。`context`包提供了一种在跨多个Goroutine传...
    99+
    2023-10-09
    Go语言
  • 如何处理Go语言中的并发网络请求超时问题?
    如何处理Go语言中的并发网络请求超时问题?在使用Go语言进行网络请求的过程中,经常会遇到并发请求的情况。而并发请求的一个关键问题就是如何处理超时。本文将介绍如何在Go语言中处理并发网络请求的超时问题,并提供具体的代码示例。在Go语言中,处理...
    99+
    2023-10-22
    并发处理 超时问题 网络请求
  • java中如何解决http请求乱码
    HTTP请求乱码解决方案一这也是最简单的方式,主要是用IOUtils工具类。URL realUrl = new URL(url); // 打开和URL之间的连接 conn = (HttpURLConnection) realUrl.op...
    99+
    2016-12-20
    java http 请求乱码
  • 如何使用golang中的net/http/cookiejar包处理HTTP请求中的Cookie
    如何使用Golang中的net/http/cookiejar包处理HTTP请求中的Cookie在使用Golang编写网络爬虫或是进行HTTP请求时,经常需要处理网站返回的Cookie。为了简化Cookie的管理,Golang提供了net/h...
    99+
    2023-11-18
    Golang Http Cookiejar
  • HTTP 和 JavaScript:PHP 中如何处理 Apache 服务器的请求?
    在现代 web 应用程序中,HTTP 是不可或缺的组成部分。它是客户端和服务器之间进行通信的协议。在 web 应用程序中,我们通常使用 Apache 服务器作为 web 服务器,并使用 PHP 作为服务器端脚本语言。在本文中,我们将讨论如...
    99+
    2023-11-07
    http apache javascript
  • 如何在 .NET 中使用 Flurl 高效处理Http请求
    目录简介Url构建Http 增强HttpClient 管理总结简介 官方介绍,Flurl是一个现代的,流利的,支持异步的,可测试的,可移植的,URL增强和Http客户端组件。 Ur...
    99+
    2022-11-12
  • 如何在 .NET中使用Flurl高效处理Http请求
    在.NET中使用Flurl可以高效地处理HTTP请求。Flurl是一个强大的HTTP客户端库,它封装了发送和处理HTTP请求的细节,...
    99+
    2023-08-09
    .NET
  • 如何使用Python处理HTTP请求中的大数据?
    随着互联网的飞速发展,大量的数据被传输到网络上,而其中大多数数据都是通过HTTP请求进行传输的。当我们需要对这些HTTP请求中的大数据进行处理时,Python是一个非常强大的工具。在本文中,我们将探讨如何使用Python处理HTTP请求中...
    99+
    2023-10-28
    http 大数据 自然语言处理
  • 如何在Unix上使用Python处理HTTP请求?
    在Unix系统上使用Python处理HTTP请求是一项非常实用的技能。Python是一种广泛应用于Web开发的高级编程语言,它有着简洁明了的语法以及强大的库支持。在这篇文章中,我们将介绍如何使用Python在Unix系统上处理HTTP请求。...
    99+
    2023-09-16
    unix http 数组
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作