• 大小: 2.88MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-11
  • 语言: Java
  • 标签: wsCaller  WebService  

资源简介

Web Service通用客户端和测试工具

资源截图

代码片段和文件信息

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 < size; 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

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

----------- ---------  ---------- -----  ----

              3363170                    26


评论

共有 条评论