【发布时间】:2011-12-31 00:05:11
【问题描述】:
我在将 java.util.Date 对象从我的 C# 客户端发送到我的 java Web 服务器时遇到问题。 当我使用 Date WebParam 调用 WebMethod 时,它可以工作。但是,如果我使用具有 Date 作为 WebParam 的自定义对象调用 WebMethod,则它始终为空。
所以,这行得通:
@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);
【问题讨论】:
-
使用fiddler2.com/fiddler2 或devolutions.net/products/HTTP-Spy-Net.aspx 调试服务器和客户端之间发送的内容
-
您展示的是 Java 端,愿意分享您的 C# 客户端代码吗?
-
你在服务器端显示
class MyObj { java.util.Date getMyDate(); },而在客户端你显示一个字段/属性myDate- 这根本不匹配IMO! -
myObj 是从 wsdl 生成的。服务器上的 MyObj 类有一个带有 getter 和 setter 的字段 myDate。当我给这个类一个 int 成员时,它就起作用了。但随着日期它没有
-
wsdl 为 myDate 生成一个额外的字段:“bool myDateSpecified”。当我将其设置为 true 时,它可以工作。这很奇怪,因为当我有一个 int 字段而不是 date 时,我也得到了一个指定的字段,但现在我不必设置指定的字段来让它工作。
标签: c# java web-services soap