詳解Java發(fā)送HTTP請求
前言
請求http的Demo是個人親測過,目前該方式已經(jīng)在線上運(yùn)行著。因為是http請求,所有發(fā)送post 和get 請求的demo都有在下方貼出,包括怎么測試,大家可直接 copy到自己的項目中使用。
正文
使用須知
為了避免大家引錯包我把依賴和涉及到包路徑給大家
import java.net.HttpURLConnection; import java.net.URI; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URIBuilder; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import com.fasterxml.jackson.databind.ObjectMapper;
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.8</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency>
HTTP 發(fā)送 get 請求
首先我們引入兩個包
發(fā)送get請求的工具類,可直接 copy 使用即可
另外,我拋出異常的代碼大家改成自己業(yè)務(wù)的異常,不需要就刪除掉。
參數(shù)說明:
host:ip
servUri:url
reString:參數(shù)
public static String getHttpData(String host, String servUri, String reString) throws Exception { StringBuffer sb = new StringBuffer(); sb.append("getHttpData:host:" + host + ",servUri:" + servUri + ",reString:" + reString); String strResp = null; try { URI uri = new URIBuilder().setScheme("http").setHost(host).setPath(servUri) .setParameter("strInfo", reString).build(); HttpGet httpGet = new HttpGet(uri); CloseableHttpClient client3 = HttpClients.createDefault(); HttpResponse resp; resp = client3.execute(httpGet); if (resp.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) { strResp = EntityUtils.toString(resp.getEntity()); logger.info("the return result:{}", strResp); } else { logger.info("Error Response:", resp.getStatusLine().toString()); throw new CommonBusinessException(CommonConstants.TASK_RELEASE_WCF, CommonConstants.TASK_RELEASE_WCF_DESC); } } catch (Exception e) { logger.error(sb.toString() + ":" + e.getMessage(), e.getCause()); throw new CommonBusinessException(CommonConstants.TASK_RELEASE_WCF, CommonConstants.TASK_RELEASE_WCF_DESC); } return strResp; }
HTTP 發(fā)送 post 請求
發(fā)送post分兩種,我分兩種的原因是為了讓大家方便,想傳對象和 json 可以直接復(fù)制過用就可以用,不用你們在轉(zhuǎn)了。
第一種是直接接收json
參數(shù)明說:
url:url
json:參數(shù)
public static String doPostData(String url, String json) throws Exception { DefaultHttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url); String result = ""; HttpResponse res = null; try { StringEntity s = new StringEntity(json.toString(), "UTF-8"); s.setContentType("application/json"); post.setHeader("Accept", "application/json"); post.setHeader("Content-type", "application/json; charset=utf-8"); post.setEntity(s); res = client.execute(post); if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { result = EntityUtils.toString(res.getEntity()); return HttpStatus.SC_OK + ""; } } catch (Exception e) { if(res == null) { return "HttpResponse 為 null!"; } throw new RuntimeException(e); } if(res == null || res.getStatusLine() == null) { return "無響應(yīng)"; } return res.getStatusLine().getStatusCode() + ""; }
@Test public void test12() throws Exception { String HOST = "http://eipwcf.aspirecn.com/SvcEF/Service1.svc/WCF_EF_MSA_GetDataInfo_P"; HttpClient client = new HttpClient(); JSONObject json = new JSONObject(); json.put("msgId", msgId); String reslut=client.doPostData(HOST, json); }
第二種是參數(shù)是對象
參數(shù)說明:
url:url
tram:對象
public static String doHttpPostData(String url, TaskReleaseApprovalModel tram) throws Exception { StringBuffer sb = new StringBuffer(); sb.append("doHttpPostData:url:" + url + ",tram:" + tram.toString() + ",contentType:" + contentType); logger.info(sb.toString()); String tmpString = ""; HttpPost request = new HttpPost(url); request.setHeader("Accept", "application/json"); request.setHeader("Content-type", "application/json"); ObjectMapper mapper = new ObjectMapper(); String jsonString; try { jsonString = mapper.writeValueAsString(tram); StringEntity entity = new StringEntity(jsonString, "UTF-8"); request.setEntity(entity); CloseableHttpClient client = HttpClients.createDefault(); HttpResponse response = client.execute(request); if (response.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) { tmpString = EntityUtils.toString(response.getEntity()); logger.info("the post result:tmpString:{}", tmpString); } else { logger.info("the post failure:tmpString:", tmpString); throw new CommonBusinessException(CommonConstants.TASK_RELEASE_WCF, CommonConstants.TASK_RELEASE_WCF_DESC); } } catch (Exception e) { logger.error(sb.toString() + ":" + e.getMessage(), e.getCause()); throw new CommonBusinessException(CommonConstants.TASK_RELEASE_POSTWCF, CommonConstants.TASK_RELEASE_POSTWCF_DESC); } return tmpString; }
這個方法我想不用寫測試類大家也會用,傳過去對象和地址就可以了,很方便很簡單。
以上所述是小編給大家介紹的Java發(fā)送HTTP請求詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Java亂碼問題解決方法_動力節(jié)點(diǎn)Java學(xué)院整理
開發(fā)java應(yīng)用出現(xiàn)亂碼是很常見的,畢竟現(xiàn)在unicode的使用還不是很廣泛,下面給大家分享Java亂碼問題解決方法,感興趣的朋友一起看看吧2017-07-07關(guān)于springboot集成swagger及knife4j的增強(qiáng)問題
這篇文章主要介紹了springboot集成swagger以及knife4j的增強(qiáng),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03Spring Security攔截器引起Java CORS跨域失敗的問題及解決
這篇文章主要介紹了Spring Security攔截器引起Java CORS跨域失敗的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07JdbcTemplate方法介紹與增刪改查操作實現(xiàn)
這篇文章主要給大家介紹了關(guān)于JdbcTemplate方法與增刪改查操作實現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用JdbcTemplate具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11