public class AbstractServiceImpl implements BaseService{
public String namespace;
public String methodName;
public String wsdlLocation;
public String soapResponseData;
@Override
public int invoke(Map<String, String> patameterMap) throws Exception {
// TODO Auto-generated method stub
PostMethod postMethod = new PostMethod(wsdlLocation);
String soapRequestData = buildRequestData(patameterMap);
byte[] bytes = soapRequestData.getBytes("utf-8");
InputStream inputStream = new ByteArrayInputStream(bytes, 0,
bytes.length);
//postMethod.setHeader("Content-type", " text/xml; charset=utf-8");
RequestEntity requestEntity = new InputStreamRequestEntity(inputStream,
bytes.length, "text/xml; charset=utf-8");
postMethod.setRequestEntity(requestEntity);
HttpClient httpClient = new HttpClient();
int statusCode = httpClient.executeMethod(postMethod);
BufferedReader reader = new BufferedReader(new InputStreamReader(postMethod.getResponseBodyAsStream()));
StringBuffer stringBuffer = new StringBuffer();
String str = "";
while((str = reader.readLine())!=null){
stringBuffer.append(str);
}
soapResponseData = stringBuffer.toString();
//soapResponseData = postMethod.getResponseBodyAsString();
return statusCode;
}
@Override
public String buildRequestData(Map<String, String> patameterMap) {
// TODO Auto-generated method stub
//String str=this.makeSoapRequestXml(namespace,methodName);
StringBuffer soapRequestData = new StringBuffer();
soapRequestData.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
soapRequestData.append("<v:Envelope xmlns:v=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:n0=\"")
.append(this.namespace).append("\"><v:Header /><v:Body><n0:")
.append(this.methodName).append(">");
Set<String> nameSet = patameterMap.keySet();
for (String name : nameSet) {
soapRequestData.append("<" + name + ">" + patameterMap.get(name)
+ "</" + name + ">");
}
soapRequestData.append("</n0:").append(this.methodName).append("></v:Body></v:Envelope>");
return soapRequestData.toString();
}
@Override
public int sendMessage(String... args) throws Exception {
// TODO Auto-generated method stub
Map<String, String> patameterMap = new HashMap<String, String>();
for(int i=0;i<args.length;i++){
patameterMap.put("arg"+i, args[i]);
}
int statusCode = this.invoke(patameterMap);
return statusCode;
}
}
httpClient soap post
最新推荐文章于 2023-12-04 23:28:30 发布