电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

解決Java處理HTTP請求超時的問題

瀏覽:7日期:2022-08-15 09:30:29
在發(fā)送POST或GET請求時,返回超時異常處理辦法:

捕獲 SocketTimeoutException | ConnectTimeoutException | ConnectionPoolTimeout 異常

三種異常說明:

SocketTimeoutException:是Java包下拋出的異常,這定義了Socket讀數(shù)據(jù)的超時時間,即從server獲取響應數(shù)據(jù)須要等待的時間;當讀取或者接收Socket超時會拋出SocketTimeoutException。

ConnectTimeoutException:是Apache的HttpClient包拋出的超時異常,定義了通過網(wǎng)絡與server建立連接的超時時間,Httpclient包中通過一個異步線程去創(chuàng)建與server的socket連接,這就是該socket連接的超時時;

當連接HTTPserver或者等待HttpConnectionManager管理的一個有效連接超時出錯會拋出ConnectionTimeoutException。

ConnectionPoolTimeout:也是Apache的HttpClient包拋出的超時異常,定義了從 ConnectionManager 管理的連接池中取出連接的超時時間;出錯會拋出 ConnectionPoolTimeoutException。

總結(jié):

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 發(fā)送http請求(連接超時處理)

業(yè)務背景:

某項目跟第三方公司對接。

業(yè)務描述:

出于數(shù)據(jù)安全考慮,需要從服務器發(fā)送請求,來調(diào)用第三方公司提供的接口。但是該場景是銷售類型,響應時間必須夠快,那么就要設置響應的超時處理。

不然讓客戶看著圈圈在那里轉(zhuǎn)半天,誰買?

項目架構(gòu):

jdk1.7

spring4.2.9

詳細內(nèi)容:

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請求參數(shù) List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair('attr1', 參數(shù)值1)); nvps.add(new BasicNameValuePair('attr2', 參數(shù)值2)); nvps.add(new BasicNameValuePair('attr3', 參數(shù)值3)); …… httpPost.setEntity(new UrlEncodedFormEntity(nvps)); //執(zhí)行post請求 CloseableHttpResponse response = httpclient.execute(httpPost); // 判斷網(wǎng)絡連接狀態(tài)碼是否正常(0--200都數(shù)正常) 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+'連接無法關(guān)閉'); } } .setConnectTimeout(5000).setConnectionRequestTimeout(5000) .setSocketTimeout(5000).build(); httpPost.setConfig(requestConfig); //設置post請求參數(shù) List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair('attr1', 參數(shù)值1)); nvps.add(new BasicNameValuePair('attr2', 參數(shù)值2)); nvps.add(new BasicNameValuePair('attr3', 參數(shù)值3)); …… httpPost.setEntity(new UrlEncodedFormEntity(nvps)); //執(zhí)行post請求 CloseableHttpResponse response = httpclient.execute(httpPost); // 判斷網(wǎng)絡連接狀態(tài)碼是否正常(0--200都數(shù)正常) 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+'連接無法關(guān)閉'); } }

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Java
相關(guān)文章:
主站蜘蛛池模板: 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | bkzzy在职研究生网 - 在职研究生招生信息咨询平台 | 气体热式流量计-定量控制流量计(空气流量计厂家)-湖北南控仪表科技有限公司 | 工业PH计|工业ph酸度计|在线PH计价格-合肥卓尔仪器仪表有限公司 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 领袖户外_深度旅游、摄影旅游、小团慢旅行、驴友网 | 步入式高低温测试箱|海向仪器 | 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 | 电动高压冲洗车_价格-江苏速利达机车有限公司 | 检验科改造施工_DSA手术室净化_导管室装修_成都特殊科室建设厂家_医疗净化工程公司_四川华锐 | 培训中心-海南香蕉蛋糕加盟店技术翰香原中心官网总部 | 新疆乌鲁木齐网站建设-乌鲁木齐网站制作设计-新疆远璨网络 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | 皮带输送机-大倾角皮带输送机-皮带输送机厂家-河南坤威机械 | 冷轧机|两肋冷轧机|扁钢冷轧机|倒立式拉丝机|钢筋拔丝机|收线机-巩义市华瑞重工机械制造有限公司 | 工业铝型材-铝合金电机壳-铝排-气动执行器-山东永恒能源集团有限公司 | 柴油发电机组_柴油发电机_发电机组价格-江苏凯晨电力设备有限公司 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 | 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 华夏医界网_民营医疗产业信息平台_民营医院营销管理培训 | 课件导航网_ppt课件_课件模板_课件下载_最新课件资源分享发布平台 | 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 体视显微镜_荧光生物显微镜_显微镜报价-微仪光电生命科学显微镜有限公司 | 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 中药超微粉碎机(中药细胞级微粉碎)-百科 | 灌装封尾机_胶水灌装机_软管灌装封尾机_无锡和博自动化机械制造有限公司 | 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 超声波破碎仪-均质乳化机(供应杭州,上海,北京,广州,深圳,成都等地)-上海沪析实业有限公司 | 丝印油墨_水性油墨_环保油墨油漆厂家_37国际化工 | 耐磨陶瓷管道_除渣器厂家-淄博浩瀚陶瓷科技有限公司 | 线材成型机,线材折弯机,线材成型机厂家,贝朗自动化设备有限公司1 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 304不锈钢无缝管_不锈钢管厂家 - 隆达钢业集团有限公司 | 祝融环境-地源热泵多恒系统高新技术企业,舒适生活环境缔造者! | 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 提升海外网站流量,增加国外网站访客UV,定制海外IP-访客王 | 浙江栓钉_焊钉_剪力钉厂家批发_杭州八建五金制造有限公司 |