mark java發起http請求的方式
系統間的互動,除了webservice,最簡單應該就是http方式。
比如微信平臺、支付寶、微博、QQ的api呼叫。
常用的方式及example:
- JDK 提供的機制
/**
* 最簡單的使用,參考:https://developer.android.com/reference/java/net/HttpURLConnection.html
*/
URL url = new URL("http://www.android.com/");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
readStream(in);
} finally {
urlConnection.disconnect();
}
/**
* 帶cookie 的post請求
* cookie設定是系統級別的,jvm通用
**/
public static void main(String[] args) throws IOException, URISyntaxException {
CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);
HttpCookie cookie = new HttpCookie("sso.dd.com", "b1846e53e99c7");
cookie.setDomain(".dd.com");
cookie.setPath("/");
cookieManager.getCookieStore().add(new URI("http://erp.dd.com/"), cookie);
URL url = new URL("http://erp.dd.com/portal/clock/clockInfo");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setReadTimeout(1000);
connection.setConnectTimeout(1000);
connection.setRequestMethod("POST");
try {
InputStream in = new BufferedInputStream(connection.getInputStream());
readStream(in);
} finally {
connection.disconnect();
}
}
/**
* spring-web的封裝
* 參考:org.springframework.http.client.SimpleClientHttpRequestFactory
* 參考:org.springframework.web.client.RestTemplate
*/
- httpcomponents-client
/**
* 重試機制,比如重試次數、根據Exception型別、或者動態調整重試請求
**/
public static HttpRequestRetryHandler myRetryHandler = new HttpRequestRetryHandler() {
public boolean retryRequest(IOException exception, int executionCount, HttpContext context) {
System.out.println(exception.getMessage());
if (executionCount <= 5) {
// Do not retry if over max retry count
return true;
}
return false;
}
};
/**
* 使用httpcomponents-client 傳送get請求
**/
public static void main(String[] args) throws IOException {
// CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpClient httpClient = HttpClients.custom().setRetryHandler(myRetryHandler).build();
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(1000).setConnectTimeout(1000).build();
HttpGet httpget = new HttpGet("http://api.github.com/users/PivotalSoftware");
httpget.setConfig(requestConfig);
CloseableHttpResponse response = httpClient.execute(httpget);
try {
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
try {
readStream(instream);
} finally {
instream.close();
}
}
} finally {
response.close();
}
}
參考: 基礎使用方式
okhttp
// TODO
相關文章
- HTTP協議如何發起請求HTTP協議
- golang使用fasthttp 發起http請求GolangASTHTTP
- windows中使用cmd發起http請求WindowsHTTP
- 來來來,今天教你-Java-是如何發起-http-請求的JavaHTTP
- 聊聊 HTTP 常見的請求方式HTTP
- java 請求HTTP返回json集合,物件處理方式JavaHTTPJSON物件
- 使用 http-proxy 代理 SAP UI5 應用發起的 HTTP 請求HTTPUI
- 在Node.js中發起HTTP請求的5種方法Node.jsHTTP
- Java實現Http請求JavaHTTP
- java傳送http請求JavaHTTP
- 微信小程式中使用Fly.js 發起http請求微信小程式JSHTTP
- POSTMAN HTTP請求的四種方式區別PostmanHTTP
- PHP 傳送 HTTP 請求的幾種方式PHPHTTP
- JAVA設定http請求代理JavaHTTP
- java發http,https請求獲取資料JavaHTTP
- Http請求get與post請求方式的各種相關面試總結HTTP面試
- java傳送http的get、post請求JavaHTTP
- vue 發起get請求和post請求Vue
- POST發起下載請求
- 微信小程式-發起請求微信小程式
- CCHttpClient發起https請求HTTPclient
- 發起GPRS撥號請求
- http請求HTTP
- HTTP 請求HTTP
- CTFHub web前置技能HTTP協議請求方式WebHTTP協議
- java 偽造http請求ip地址JavaHTTP
- Java Http Get Post 請求工具類JavaHTTP
- Springboot -- 用更優雅的方式發HTTP請求(RestTemplate詳解)Spring BootHTTPREST
- Go 發起 HTTP2.0 請求流程分析 (後篇)——標頭壓縮GoHTTP
- 在lua中操作http請求有兩種方式HTTP
- React技巧之發出http請求ReactHTTP
- 淺談HTTP中GET和POST請求方式的區別HTTP
- 中止請求和超時 跨域的HTTP請求 認證方式 JSONP跨域HTTPJSON
- http請求概述HTTP
- HTTP請求方法HTTP
- http請求頭HTTP
- go http請求GoHTTP
- 如何使用事務碼SMICM分析ABAP程式碼發起的HTTP請求的錯誤HTTP