Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 日期SOAP Web服务_C#_Java_Web Services_Soap - Fatal编程技术网

C# 日期SOAP Web服务

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

从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(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时,我也会得到一个指定的字段,但是现在我不必为它设置指定的字段。