import com.threeclear.tool.*;
import org.apache.axiom.om.*;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.transport.http.HTTPConstants;
import com.alibaba.fastjson.JSONObject;
import org.apache.tools.ant.taskdefs.Sleep;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import java.io.File;
import java.util.Set;
import java.util.UUID;
/**
* 创建人:yaoxh
* 创建时间:2017/7/12.
* 主要功能:请求webService接口
*/
public class WebServiceClient {
/**
* 写入接口数据
* @param action 请求地址
* @param params 请求参数
* @param nameSpeace 命名空间前缀
* @return
* @throws Exception
* 调用方法 String resStr=WebServiceClient.getWebService("GetQXHourlyData", params.toString(),"dt");
*/
public static String getWebService(String action, String params,String nameSpeace) throws Exception{
String result = null;
String ipaddr =ConfigManager.getInstance().GetProperty(nameSpeace+"ipaddr");
String namespace = ConfigManager.getInstance().GetProperty(nameSpeace+"namespace");
String userName =ConfigManager.getInstance().GetProperty(nameSpeace+"userName");
String token = ConfigManager.getInstance().GetProperty(nameSpeace+"token");
try {
ServiceClient sender = new ServiceClient();
Options options = sender.getOptions();
EndpointReference targetERP = new EndpointReference(ipaddr);
options.setTo(targetERP);
options.setSoapVersionURI(SOAP12Constants.SOAP_FAULT_TEXT_LANG_ATTR_NS_URI);
options.setAction(namespace+action);
options.setManageSession(true);
options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT,true);
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace(namespace, "");
OMElement header = fac.createOMElement("MySoapHeader", omNs);
OMElement ome_username = fac.createOMElement("UserName", omNs);
OMElement ome_token = fac.createOMElement("PassWord", omNs);
ome_username.setText(userName);
ome_token.setText(token);
header.addChild(ome_username);
header.addChild(ome_token);
sender.addHeader(header);
OMElement data = fac.createOMElement(action, omNs);
JSONObject paramObj=JSONObject.parseObject(params);
Set<String> keyList = paramObj.keySet();
for (String key : keyList) {
String value = paramObj.getString(key);
OMElement metaData = fac.createOMElement(key, omNs);
metaData.setText(value);
data.addChild(metaData);
}
data.build();
result = sender.sendReceive(data).getFirstElement().getText();
sender.cleanupTransport();
} catch (Exception e) {
result=e.getMessage();
// axisFault.printStackTrace();
}
return result;
}
/**
* 写入接口数据
* @param action 请求地址
* @param params 请求参数
* @return
* @throws Exception
* 调用方法 String resStr=WebServiceClient.getMessageWebService("AddPhone", params);
*/
public static String getMessageWebService(String action, JSONObject params) throws Exception{
String result = null;
String ipaddr= ConfigUtil.getValue("messageipaddr");
String namespace = ConfigUtil.getValue("messagenamespace");
// String ipaddr ="http://www.aepb.gov.cn:8080/EMCSMSService/Service.asmx?wsdl";
// String namespace = "http://tempuri.org/";
try {
ServiceClient sender = new ServiceClient();
Options options = sender.getOptions();
EndpointReference targetERP = new EndpointReference(ipaddr);
options.setTo(targetERP);
options.setSoapVersionURI(SOAP12Constants.SOAP_FAULT_TEXT_LANG_ATTR_NS_URI);
options.setAction(namespace+action);
options.setManageSession(true);
options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT,true);
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace(namespace, "");
OMElement data = fac.createOMElement(action, omNs);
Set<String> keyList = params.keySet();
String valuekey = ConfigUtil.getValue("messagekey");
// String valuekey="ahemcsms2016";
OMElement metaDatakey = fac.createOMElement("Key", omNs);
metaDatakey.setText(valuekey);
data.addChild(metaDatakey);
for (String key : keyList) {
String value = params.getString(key);
OMElement metaData = fac.createOMElement(key, omNs);
metaData.setText(value);
data.addChild(metaData);
}
data.build();
result = sender.sendReceive(data).getFirstElement().getText();
sender.cleanupTransport();
} catch (Exception e) {
result=e.getMessage();
// axisFault.printStackTrace();
}
return result;
}
}