此方法不建议在需要高并发
或者是批量调用
webservice接口时使用,比较吃内存。仅在管理系统后台中,或者是用户量少时可以采用此取巧方案。
直接上核心代码:
java
package com.dhc.minboot.api;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
/**
* xx的webservice调用专用类
*/
@Component
public class HRClient {
private static final Logger log = LoggerFactory.getLogger(HRClient.class);
public Boolean doPost(String info) throws Exception {
Boolean isSuccess = false;
String wsUrl = "http://xxx.xx.xx.xxx/public/WEBHR_Service.asmx";
URL url = new URL(wsUrl);
URLConnection conn1 = url.openConnection();
HttpURLConnection con = (HttpURLConnection) conn1;
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestMethod("POST");
con.setRequestProperty("content-type","text/xml");
con.setRequestProperty("SOAPAction","http://tempuri.org/BestSignPushUrl");
String requestBody = "<soap:Envelope " +
"xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"> " +
"<soap:Body>" +
"<BestSignPushUrl xmlns=\"http://tempuri.org/\">" +
"<httpBody>" + info +"</httpBody>" +
"</BestSignPushUrl>" +
" </soap:Body>" +
"</soap:Envelope>";
OutputStream out = con.getOutputStream();
out.write(requestBody.getBytes());
out.close();
try {
int code1 = con.getResponseCode();
if(code1==200){
InputStream is = con.getInputStream();
byte[] b = new byte[1024];
StringBuffer sb = new StringBuffer();
int len = 0;
while((len=is.read(b))!=-1){
String str = new String(b,0,len,"UTF-8");
sb.append(str);
}
log.info("hr系统请求返回{}",sb.toString());
isSuccess = true;
is.close();
con.disconnect();
} else {
log.info("hr系统请求出现问题,code为{},参数为{}",code1,info);
}
} catch (Exception e) {
log.error("hr系统请求出现问题,参数{}",info);
}
return isSuccess;
}
}