C# 日期SOAP Web服务
从C#客户端向java Web服务器发送java.util.Date对象时遇到问题。 当我调用带有日期WebParam的WebMethod时,它会工作。但是,如果我使用日期为WebParam的自定义对象调用WebMethod,则它始终为null 因此,这是可行的:C# 日期SOAP Web服务,c#,java,web-services,soap,C#,Java,Web Services,Soap,从C#客户端向java Web服务器发送java.util.Date对象时遇到问题。 当我调用带有日期WebParam的WebMethod时,它会工作。但是,如果我使用日期为WebParam的自定义对象调用WebMethod,则它始终为null 因此,这是可行的: @WebMethod(operationName="thisWorks") public void thisWorks(@WebParam(name="from")Date from) { System.out.println
@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);
wsdl为myDate生成一个额外的字段:“boolMyDateSpecified”。当我将此设置为true时,它就工作了。这很奇怪,因为当我使用int字段而不是date时,我也会为它指定一个字段,但现在我不必为它设置指定的字段。这个问题似乎是.Net XML序列化程序的问题。我确实用Java重写了我的代码,它运行得很好 我可以用某种方式来解决
{!variable}指定的=true代码>句子:
将对象的整个声明移动到单独的命名空间。因此,每次更新WSDL时,代码都不会被覆盖
不要使用系统。在属性声明中使用bool
或DateTime
或Double
。明白了吗?使用或调试服务器和客户端之间发送的内容您正在显示Java端,是否愿意共享您的C#客户端代码?您在服务器端显示类MyObj{Java.util.Date getMyDate();}
,而在客户端显示一个字段/属性myDate
,这一点都不匹配!myObj是从wsdl生成的。服务器上的MyObj类有一个带有getter和setter的myDate字段。当我给这个类一个int成员时,它就工作了。但是,如果没有日期,wsdl会为myDate生成一个额外的字段:“boolMyDateSpecified”。当我将此设置为true时,它就工作了。这很奇怪,因为当我有一个int字段而不是date时,我也会得到一个指定的字段,但是现在我不必为它设置指定的字段。