我这里用的是java+axis1.4开发的客户端,对方是.net服务端,调用是成功的(对方出错信息反馈回来了),但是对方打印出参数都是空的:java:Call call = (Call)service.createCall();
URL u = new URL(serUrl);
call.setTargetEndpointAddress(u);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://tempuri.org/test");
call.setOperationName(new QName("http://tempuri.org/","test");call.addParameter(new QName("http://tempuri.org/","param1"),XMLType.XSD_STRING,ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);Object obj = call.invoke("test",new Object[]{"xxxxx"});
System.out.println(obj);--------------对方程序
[WebService(Namespace="http://tmpuri.org/")]
...
public class....
public String test(String param1){
    if(string.IsNullOrEmpty(param1)) throw new ApplicationException("参数为空");//这句话客户端能获取到
奇怪的是我客户端的程序在其他项目中也是这么写的,而且能够正常使用,唯独这个项目不好使,请各位大侠分析一下原因,谢谢。

解决方案 »

  1.   

    http://developer.51cto.com/art/200906/131217.htm之前做过一个,java部分的没问题,但是对方方法之前,参数上面好像要加写东西,看下上面文章。
      

  2.   

    多谢LS,但是.NET的不懂,下面是从那个网址摘出来的,帮忙解释下增加的部分://指定SoapAction      
    [SoapRpcMethod(Action="http://www.xxx.com/Rpc",
    RequestNamespace="http://www.xxx.com/SU",ResponseNamespace="http://www.xxx.com/SU")]      
    [WebMethod]      
    public string getName(string name)      
    {      
    return "Hello"+name;      
    }   是[SoapRpcMethod(Action="http://www.xxx.com/Rpc",
    RequestNamespace="http://www.xxx.com/SU",ResponseNamespace="http://www.xxx.com/SU")]
    这个东西吗?
      

  3.   

    不知道楼主客户端可有报什么错误?
    是要实现什么功能?你调用的时候参数是字符串还是对象等等 ?参数应当为期设置addParameter值。//OK
    public static void quickReg(String tel)
    {
    final String wsdl = "http://localhost:8000/services/UserInfoWebService";
    Service service = new Service();
    Call call;
    try { call = (Call) service.createCall();
    try {
    call.setTargetEndpointAddress(new  java.net.URL(wsdl));
    } catch (MalformedURLException e) {
    e.printStackTrace();
    }
    call.setOperationName("quick");//WSDL里面描述的接口名称
    call.getMessageContext().setUsername("user");
    call.getMessageContext().setPassword("password");
    call.addParameter("userphone", org.apache.axis.encoding.XMLType.XSD_STRING,
    javax.xml.rpc.ParameterMode.IN);//接口的参数
    call.addParameter("checkcode", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);//接口的参数

    call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
    Object xml;
    try {
    xml = (Object)call.invoke(new Object[]{tel,"code"});
    //给方法传递参数,并且调用方法
    System.out.println("result is "+xml);
    } catch (RemoteException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    } catch (ServiceException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } }供楼主参考下,参数的传入。
      

  4.   

    多谢楼上回复,接口的调用双方都没有任何的异常错误,而是在服务方得到的参数都是空的,即无法获得客户端调用时传入的参数。今年用这种方式做接口已经是第4次了,只有这一个遇到这种莫名的问题,与其他的三家对接的公司接口都没有任何问题,这也是我比较奇怪的地方。我现在有点怀疑是不是对方那个的某个配置有问题,但是由于我对.NET基本一窍不通,所以希望碰到过次类问题的朋友给点提示。
      

  5.   

    估计是.net的配置的问题,好好查一下吧