-
大小: 2.88MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-09-11
- 語(yǔ)言: Java
- 標(biāo)簽: wsCaller??WebService??
資源簡(jiǎn)介
Web Service通用客戶端和測(cè)試工具

代碼片段和文件信息
package?org.wix.wsCaller;
import?org.apache.axis.Constants;
import?org.apache.axis.encoding.ser.SimpleDeserializer;
import?org.apache.axis.wsdl.gen.Parser;
import?org.apache.axis.wsdl.symbolTable.*;
import?javax.wsdl.*;
import?javax.wsdl.extensions.soap.SOAPAddress;
import?javax.xml.namespace.QName;
import?javax.xml.rpc.Call;
import?javax.xml.rpc.encoding.Deserializer;
import?javax.xml.rpc.encoding.DeserializerFactory;
import?java.util.*;
//?Web?Service?Dynamic?Invoker
public?class?DynamicInvoker
{
private?Parser?wsdlParser?=?null;
private?Map?services?=?null;
public?DynamicInvoker(String?wsdlURL)?throws?Exception
{
wsdlParser?=?new?Parser();
wsdlParser.run(wsdlURL);
services?=?enumSymTabEntry(ServiceEntry.class);
}
public?Map?invoke(String?serviceName
??String?portName
??String?operationName
??Vector?parameterValues)?throws?Exception
{
Vector?inputs?=?new?Vector();
String?returnName?=?null;
ServiceEntry?serviceEntry?=?(ServiceEntry)?services.get(serviceName);
Service?service?=?serviceEntry.getService();
org.apache.axis.client.Service?clientService?=?new
org.apache.axis.client.Service(wsdlParser?service.getQName());
Call?call?=?clientService.createCall(QName.valueOf(portName)
?QName.valueOf(operationName));
(?(org.apache.axis.client.Call)?call).setTimeout(new?Integer(15?*?1000));
BindingEntry?bindingEntry?=?getBindingEntry(serviceName?portName);
Operation?o?=?getOperation(bindingEntry?operationName);
Parameters?parameters?=?bindingEntry.getParameters(o);
if?(parameters.returnParam?!=?null)
{
QName?returnType?=?org.apache.axis.wsdl.toJava.Utils.
getXSIType(parameters.returnParam);
QName?returnQName?=?parameters.returnParam.getQName();
returnName?=?returnQName.getLocalPart();
}
int?size?=?parameters.list.size();
for?(int?i?=?0;?i? {
Parameter?p?=?(Parameter)?parameters.list.get(i);
switch?(p.getMode())
{
case?Parameter.IN:
inputs.add(getParamData(?(org.apache.axis.client.Call)?call
p
(String)?parameterValues.elementAt(i)));
break;
case?Parameter.OUT:
break;
case?Parameter.INOUT:
inputs.add(getParamData(?(org.apache.axis.client.Call)?call
p
(String)?parameterValues.elementAt(i)));
break;
}
}
object?ret?=?call.invoke(inputs.toArray());
Map?outputs?=?call.getOutputParams();
HashMap?map?=?new?HashMap();
if?(ret?!=?null?&&?returnName?!=?null)
{
map.put(returnName?ret);
}
if?(outputs?!=?null)
{
for?(Iterator?i?=?outputs.keySet().iterator();?i.hasNext();?)
{
object?obj?=?i.next();
String?name;
object?value;
if?(obj.getClass().getName().equals(“java.lang.String“))
{
name?=?(String)?obj;
}
else
{
name?=?(?(QName)?obj).getLocalPart();
}
value?=?outputs.get(obj);
map.put(name?va
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
-----------?---------??----------?-----??----
??????????????3363170????????????????????26
評(píng)論
共有 條評(píng)論