Ps:CDSpace工具。Ps:发送个get和post请求的5个步骤。
核心代码:
// pom.xml<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.2</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>1.3.2</version></dependency>
packagecom.imooc.MRAutoSpace.model.http; importjava.util.Map; importorg.apache.http.client.methods.HttpUriRequest; publicclassHttpClientRequest { privateStringurl; // private HttpUriRequest httpMethod;privateMap<String, String>headers; privateStringbody; publicStringgetUrl() { returnurl; } publicvoidsetUrl(Stringurl) { this.url=url; } // public HttpUriRequest getHttpMethod() {// return httpMethod;// }//// public void setHttpMethod(HttpUriRequest httpMethod) {// this.httpMethod = httpMethod;// }publicMap<String, String>getHeaders() { returnheaders; } publicvoidsetHeaders(Map<String, String>headers) { this.headers=headers; } publicStringgetBody() { returnbody; } publicvoidsetBody(Stringbody) { this.body=body; } }
packagecom.imooc.MRAutoSpace.model.http; importjava.util.Map; publicclassHttpClientResponse { privateStringstatusCode; privateMap<String, String>headers; privateStringbody; publicStringgetStatusCode() { returnstatusCode; } publicvoidsetStatusCode(StringstatusCode) { this.statusCode=statusCode; } publicMap<String, String>getHeaders() { returnheaders; } publicvoidsetHeaders(Map<String, String>headers) { this.headers=headers; } publicStringgetBody() { returnbody; } publicvoidsetBody(Stringbody) { this.body=body; } }
packagecom.imooc.MRAutoSpace.uitls.http; importjava.io.IOException; importjava.util.HashMap; importjava.util.Map; importorg.apache.commons.io.IOUtils; importorg.apache.http.Header; importorg.apache.http.HttpEntity; importorg.apache.http.client.ClientProtocolException; importorg.apache.http.client.methods.CloseableHttpResponse; importorg.apache.http.client.methods.HttpDelete; importorg.apache.http.client.methods.HttpEntityEnclosingRequestBase; importorg.apache.http.client.methods.HttpGet; importorg.apache.http.client.methods.HttpPost; importorg.apache.http.client.methods.HttpPut; importorg.apache.http.client.methods.HttpRequestBase; importorg.apache.http.entity.StringEntity; importorg.apache.http.impl.client.CloseableHttpClient; importorg.apache.http.impl.client.HttpClientBuilder; importorg.apache.log4j.Logger; importcom.imooc.MRAutoSpace.model.http.HttpClientRequest; importcom.imooc.MRAutoSpace.model.http.HttpClientResponse; publicclassHttpClientUtil { privatestaticLoggerlogger=Logger.getLogger(HttpClientUtil.class); privateCloseableHttpClienthttpClient; publicstaticHttpClientResponsedoGet(HttpClientRequesthttpClientRequest) { HttpClientUtilhttpClientUtil=newHttpClientUtil(); httpClientUtil.init(); HttpGethttpGet=newHttpGet(httpClientRequest.getUrl()); returnhttpClientUtil.sendRequest(httpGet, httpClientRequest); } publicstaticHttpClientResponsedoPost(HttpClientRequesthttpClientRequest) { HttpClientUtilhttpClientUtil=newHttpClientUtil(); httpClientUtil.init(); HttpPosthttpPost=newHttpPost(httpClientRequest.getUrl()); returnhttpClientUtil.sendRequest(httpPost, httpClientRequest); } publicstaticHttpClientResponsedoDelete(HttpClientRequesthttpClientRequest) { HttpClientUtilhttpClientUtil=newHttpClientUtil(); httpClientUtil.init(); HttpDeletehttpDelete=newHttpDelete(httpClientRequest.getUrl()); returnhttpClientUtil.sendRequest(httpDelete, httpClientRequest); } publicstaticHttpClientResponsedoPut(HttpClientRequesthttpClientRequest) { HttpClientUtilhttpClientUtil=newHttpClientUtil(); httpClientUtil.init(); HttpPuthttpPut=newHttpPut(httpClientRequest.getUrl()); returnhttpClientUtil.sendRequest(httpPut, httpClientRequest); } privatevoidinit() { httpClient=HttpClientBuilder.create().build(); logger.info("Start init http connection."); } privateHttpClientResponsesendRequest(HttpRequestBasehttpRequestBase, HttpClientRequesthttpClientRequest) { HttpClientResponsehttpClientResponse=newHttpClientResponse(); StringencodingOfBody="ISO-8859-1"; Map<String, String>requestHeaders=httpClientRequest.getHeaders(); for ( Stringkey : requestHeaders.keySet()) { httpRequestBase.setHeader(key, requestHeaders.get(key)); if (key.toLowerCase().equals("content-type")) { StringcontentType=requestHeaders.get(key); if ( contentType.split(";").length>=2 ) { encodingOfBody=contentType.split(";")[1].split("=")[1]; } } } if ( httpRequestBaseinstanceofHttpEntityEnclosingRequestBase ) { ((HttpEntityEnclosingRequestBase) httpRequestBase).setEntity(newStringEntity(httpClientRequest.getBody(), encodingOfBody)); } try { CloseableHttpResponseresponse=httpClient.execute(httpRequestBase); StringstatusCode=response.getStatusLine().toString().split(" ")[1]; logger.info(statusCode); httpClientResponse.setStatusCode(statusCode); Header[] headers=response.getAllHeaders(); Map<String, String>responseHeaders=newHashMap<String, String>(); for (Headerheader : headers) { logger.info(header.getName() +": "+header.getValue()); responseHeaders.put(header.getName(), header.getValue()); } httpClientResponse.setHeaders(responseHeaders); HttpEntityentity=response.getEntity(); Stringbody=IOUtils.toString(entity.getContent()); logger.info(body); httpClientResponse.setBody(body); this.close(); } catch (ClientProtocolExceptione) { logger.error("This http protocol is not supported."); logger.error(e.getMessage()); } catch (IOExceptione) { logger.error(e.getMessage()); } returnhttpClientResponse; } privatevoidclose() { try { httpClient.close(); logger.info("Close http connection successfully!"); } catch (IOExceptione) { logger.error("Close http connction failed."); logger.error(e.getMessage()); } } publicStringformatUrl(Stringurl, Map<String, String>queryParams) { Stringresult=""; Stringparams=""; for (Stringkey : queryParams.keySet()) { params+= (key+"="+queryParams.get(key) +"&"); } result+= (url+"?"+params.substring(0, params.length() -1)); returnresult; } publicCloseableHttpClientgetHttpClient() { returnhttpClient; } publicvoidsetHttpClient(CloseableHttpClienthttpClient) { this.httpClient=httpClient; } }
packagecom.imooc.MRAutoSpace.http; importjava.util.HashMap; importjava.util.Map; importorg.testng.Assert; importorg.testng.annotations.Test; importorg.testng.log4testng.Logger; importcom.imooc.MRAutoSpace.model.http.HttpClientRequest; importcom.imooc.MRAutoSpace.model.http.HttpClientResponse; importcom.imooc.MRAutoSpace.uitls.http.HttpClientUtil; publicclassHttpClientUtilTest { privatestaticLoggerlogger=Logger.getLogger(HttpClientUtilTest.class); @TestpublicvoidtestMethod() { HttpClientRequestrequest=newHttpClientRequest(); request.setUrl("http://localhost:19090/getClassName?name=value"); Map<String, String>requestHeaders=newHashMap<String, String>(); requestHeaders.put("name01", "value01"); requestHeaders.put("name02", "value02"); request.setHeaders(requestHeaders); HttpClientResponseresponse=HttpClientUtil.doGet(request); Assert.assertEquals("400", response.getStatusCode()); } @TestpublicvoidtestMethodPost() { HttpClientRequestrequest=newHttpClientRequest(); request.setUrl("http://localhost:19090/getClassName?name=value"); Map<String, String>requestHeaders=newHashMap<String, String>(); requestHeaders.put("name01", "value01"); requestHeaders.put("name02", "value02"); request.setHeaders(requestHeaders); request.setBody("test body string"); HttpClientResponseresponse=HttpClientUtil.doPost(request); Assert.assertEquals("{\"id\": \"\", \"className\": \"testClassName\"}", response.getBody()); } @TestpublicvoidtestFormatUrl() { Stringurl="http://localhost:19090/testurl"; Map<String, String>requestHeaders=newHashMap<String, String>(); requestHeaders.put("name01", "value01"); requestHeaders.put("name02", "value02"); HttpClientUtilutil=newHttpClientUtil(); Assert.assertEquals(util.formatUrl(url, requestHeaders), "http://localhost:19090/testurl?name02=value02&name01=value01"); } }