生活随笔
收集整理的這篇文章主要介紹了
Java---取得操作系统默认的代理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
1、取得 代理
private?ProxySelector?proxySelector?=?ProxySelector.getDefault();/***?The?proxy?selector?to?use.**?@return?The?proxy?selector?to?use.*/public?ProxySelector?getProxySelector()?{return?proxySelector;}/***?Selects?a?proxy?for?the?given?URL.**?@param?requestTokenURL?The?URL*?@return?The?proxy.*/protected?Proxy?selectProxy(URL?requestTokenURL)?{try?{List<Proxy>?selectedProxies?=?getProxySelector().select(requestTokenURL.toURI());return?selectedProxies.isEmpty()???Proxy.NO_PROXY?:?selectedProxies.get(0);}catch?(URISyntaxException?e)?{throw?new?IllegalArgumentException(e);}}
2. ?創建HTTP連接
??/***?Open?a?connection?to?the?given?URL.**?@param?requestTokenURL?The?request?token?URL.*?@return?The?HTTP?URL?connection.*/protected?HttpURLConnection?openConnection(URL?requestTokenURL)?{try?{HttpURLConnection?connection?=?(HttpURLConnection)?requestTokenURL.openConnection(selectProxy(requestTokenURL));connection.setConnectTimeout(getConnectionTimeout());connection.setReadTimeout(getReadTimeout());return?connection;}catch?(IOException?e)?{throw?new?OAuthRequestFailedException("Failed?to?open?an?OAuth?connection.",?e);}}
3. 設置其他參數
??/***?Read?a?resource.**?@param?details?The?details?of?the?resource.*?@param?url?The?URL?of?the?resource.*?@param?httpMethod?The?http?method.*?@param?token?The?token.*?@param?additionalParameters?Any?additional?request?parameters.*?@param?additionalRequestHeaders?Any?additional?request?parameters.*?@return?The?resource.*/protected?InputStream?readResource(ProtectedResourceDetails?details,?URL?url,?String?httpMethod,?OAuthConsumerToken?token,?Map<String,?String>?additionalParameters,?Map<String,?String>?additionalRequestHeaders)?{url?=?configureURLForProtectedAccess(url,?token,?details,?httpMethod,?additionalParameters);String?realm?=?details.getAuthorizationHeaderRealm();boolean?sendOAuthParamsInRequestBody?=?!details.isAcceptsAuthorizationHeader()?&&?(("POST".equalsIgnoreCase(httpMethod)?||?"PUT".equalsIgnoreCase(httpMethod)));HttpURLConnection?connection?=?openConnection(url);try?{connection.setRequestMethod(httpMethod);}catch?(ProtocolException?e)?{throw?new?IllegalStateException(e);}Map<String,?String>?reqHeaders?=?details.getAdditionalRequestHeaders();if?(reqHeaders?!=?null)?{for?(Map.Entry<String,?String>?requestHeader?:?reqHeaders.entrySet())?{connection.setRequestProperty(requestHeader.getKey(),?requestHeader.getValue());}}if?(additionalRequestHeaders?!=?null)?{for?(Map.Entry<String,?String>?requestHeader?:?additionalRequestHeaders.entrySet())?{connection.setRequestProperty(requestHeader.getKey(),?requestHeader.getValue());}}int?responseCode;String?responseMessage;try?{connection.setDoOutput(sendOAuthParamsInRequestBody);connection.connect();if?(sendOAuthParamsInRequestBody)?{String?queryString?=?getOAuthQueryString(details,?token,?url,?httpMethod,?additionalParameters);OutputStream?out?=?connection.getOutputStream();out.write(queryString.getBytes("UTF-8"));out.flush();out.close();}responseCode?=?connection.getResponseCode();responseMessage?=?connection.getResponseMessage();if?(responseMessage?==?null)?{responseMessage?=?"Unknown?Error";}}catch?(IOException?e)?{throw?new?OAuthRequestFailedException("OAuth?connection?failed.",?e);}if?(responseCode?>=?200?&&?responseCode?<?300)?{try?{return?connection.getInputStream();}catch?(IOException?e)?{throw?new?OAuthRequestFailedException("Unable?to?get?the?input?stream?from?a?successful?response.",?e);}}else?if?(responseCode?==?400)?{throw?new?OAuthRequestFailedException("OAuth?authentication?failed:?"?+?responseMessage);}else?if?(responseCode?==?401)?{String?authHeaderValue?=?connection.getHeaderField("WWW-Authenticate");if?(authHeaderValue?!=?null)?{Map<String,?String>?headerEntries?=?StringSplitUtils.splitEachArrayElementAndCreateMap(StringSplitUtils.splitIgnoringQuotes(authHeaderValue,?','),?"=",?"\"");String?requiredRealm?=?headerEntries.get("realm");if?((requiredRealm?!=?null)?&&?(!requiredRealm.equals(realm)))?{throw?new?InvalidOAuthRealmException(String.format("Invalid?OAuth?realm.?Provider?expects?\"%s\",?when?the?resource?details?specify?\"%s\".",?requiredRealm,?realm),?requiredRealm);}}throw?new?OAuthRequestFailedException("OAuth?authentication?failed:?"?+?responseMessage);}else?{throw?new?OAuthRequestFailedException(String.format("Invalid?response?code?%s?(%s).",?responseCode,?responseMessage));}}
轉載于:https://my.oschina.net/frankies/blog/261569
總結
以上是生活随笔為你收集整理的Java---取得操作系统默认的代理的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。