package com.sh.portal.framework.client.http;
import java.io.IOException;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Component;
import com.sh.portal.framework.client.RemoteServerArgs;
import com.sh.portal.framework.client.RemoteServerClient;
import com.sh.portal.framework.client.RemoteServerResponse;
import com.sh.portal.util.CommonUtils;
@Componentpublic classRemoteServerClientImpl implements RemoteServerClient {private static final String DEFAULT_ENCODE = "UTF-8";private static final String APPLICATION_JSON = "application/json";
@OverridepublicRemoteServerResponse post(RemoteServerArgs args) throws IOException {
String ip=CommonUtils.getRequestIpAddress();//创建HttpClientBuilder
HttpClientBuilder httpClientBuilder =HttpClientBuilder.create();//HttpClient
CloseableHttpClient closeableHttpClient =httpClientBuilder.build();//请求参数
StringEntity entity = newStringEntity(args.getRequestJson(), DEFAULT_ENCODE);
entity.setContentEncoding(newBasicHeader(HTTP.CONTENT_TYPE, APPLICATION_JSON));
HttpPost httpPost= newHttpPost(args.getUrl());
httpPost.addHeader(HTTP.CONTENT_TYPE, APPLICATION_JSON);//此处区别PC终端类型
httpPost.addHeader("typeFlg", "9");//此处增加浏览器端访问IP
if(!ip.equals("")){
httpPost.addHeader("x-forwarded-for",ip);
}
httpPost.setEntity(entity);
httpPost.setConfig(RequestConfig.DEFAULT);
HttpResponse httpResponse;//post请求
httpResponse =closeableHttpClient.execute(httpPost);
HttpEntity httpEntity=httpResponse.getEntity();
RemoteServerResponse response;if (httpEntity != null) {
response= newRemoteServerResponse(httpResponse.getStatusLine().getStatusCode(),
EntityUtils.toString(httpEntity, DEFAULT_ENCODE));
}else{
response= newRemoteServerResponse(httpResponse.getStatusLine().getStatusCode(),
StringUtils.EMPTY);
}//释放资源
closeableHttpClient.close();returnresponse;
}
}
原作者:https://www.cnblogs.com/holdon521/p/4686849.html