日期SOAP Web服务

时间:2011-12-31 00:05:12

标签: c# java web-services soap

我在将一个java.util.Date对象从我的C#客户端发送到我的java webserver时遇到问题。 当我使用Date WebParam调用WebMethod时,它可以工作。但是,如果我使用自定义对象调用WebMethod,该对象具有Date作为WebParam,则它始终为null。

所以,这有效:

@WebMethod(operationName="thisWorks")
public void thisWorks(@WebParam(name="from")Date from)
{
    System.out.println(from); //prints the value of the date
}

这不起作用:

class MyObj { java.util.Date getMyDate(); }

@WebMethod(operationName="thisDoesntWork")
public void thisDoesntWork(@WebParam(name="myObj")MyObj myObj)
{
    System.out.println(myObj.getMyDate()); //prints null
}

客户端:

ServiceClient client = new ServiceClient();
client.thisWorks(DateTime.Now);
myObj o = new myObj();
o.myDate = DateTime.Now;
client.thisDoesntWork(o);

2 个答案:

答案 0 :(得分:1)

wsdl为myDate生成一个额外的字段:“bool myDateSpecified”。当我将其设置为true时,它可以正常工作。这很奇怪,因为当我有一个int字段而不是date时我也得到了一个指定的字段,但现在我没有必要设置指定的字段才能工作。

答案 1 :(得分:1)

这个问题似乎是.Net XML Serializer。我用Java重写了我的代码,它运行得非常好。

我可以想办法解决{!variable}Specified = true;句子:

将对象的整个声明移动到单独的命名空间。因此,每次更新WSDL时,您的代码都不会被覆盖。

请勿在属性声明中使用System.Nullable<bool>,请使用boolDateTimeDouble。明白这一点?