package cn.ucmed.rubik.utils.shandongmch;
import java.nio.charset.Charset;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
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.util.EntityUtils;
/**
* Created by ZY-LJ-1446 on 2017/7/7.
*/
public class ServiceUtils {
static int socketTimeout = 30000;// 请求超时时间
static int connectTimeout = 30000;// 传输超时时间
/**
* httpClient调用webservice
* postUrl 调用地址
* xml 传入xml
*soapAction 请求方法
* */
public static String getDocument(String postUrl ,String xml ,String soapAction)
{
String q1="<?xml version = \"1.0\" ?>";
String q="<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:med=\"http://medcare.org/\">" +
" <soapenv:Header/>" +
" <soapenv:Body>" +
" <med:QueryUltraSonicResult>" +
" <med:strXmlReceive>" +
" <![CDATA[";
String h="]]>" +
" </med:strXmlReceive>" +
" </med:QueryUltraSonicResult>" +
" </soapenv:Body>" +
"</soapenv:Envelope>";
xml=q1+q+xml+h;
String retStr = "";
// 创建HttpClientBuilder
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
// HttpClient
CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
HttpPost httpPost = new HttpPost(postUrl);
// 设置请求和传输超时时间
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(socketTimeout)
.setConnectTimeout(connectTimeout).build();
httpPost.setConfig(requestConfig);
try {
httpPost.setHeader("Content-Type", "text/xml;charset=UTF-8");
httpPost.setHeader("SOAPAction", soapAction);
StringEntity data = new StringEntity(xml,
Charset.forName("UTF-8"));
httpPost.setEntity(data);
CloseableHttpResponse response = closeableHttpClient
.execute(httpPost);
HttpEntity httpEntity = response.getEntity();
if (httpEntity != null) {
retStr = EntityUtils.toString(httpEntity, "UTF-8");
}
// 释放资源
closeableHttpClient.close();
} catch (Exception e) {
}
return retStr;
}
/**
* 解析soap
* */
public static String jiexiSoap(String res)
{
String removeStr = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
"<soap:Body>" +
"<QueryUltraSonicResultResponse xmlns=\"http://medcare.org/\">" +
"<QueryUltraSonicResultResult>";
String removeStr2="</QueryUltraSonicResultResult></QueryUltraSonicResultResponse></soap:Body></soap:Envelope>";
String removeStr3="<![CDATA[";
String removeStr4="]]>";
String removeStr5=" xmlns=\"\"";
res=res.replace(removeStr,"").replace(removeStr2,"").replace(removeStr3,"")
.replace(removeStr4,"").replace(removeStr5,"");
return res;
}
}