Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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#Java Web服务客户端-数据互操作性问题_C#_Java_Web Services - Fatal编程技术网

C#Java Web服务客户端-数据互操作性问题

C#Java Web服务客户端-数据互操作性问题,c#,java,web-services,C#,Java,Web Services,我有JavaWeb服务,一个Web方法的参数是自定义Java类型 public class KeyList { public Integer key; public Integer[] nums ; public Integer result; } Web服务更新结果值并将KeyList对象返回给客户端 我有一个C#客户端指向这个Web服务(在VisualStudio中通过添加服务引用并指向wsdl url生成)。当我在C#中收到keyList对象时,第一部分(整数键)显示为0。 如果我将Ja

我有JavaWeb服务,一个Web方法的参数是自定义Java类型

public class KeyList {
public Integer key;
public Integer[] nums ;
public Integer result;
}
Web服务更新结果值并将KeyList对象返回给客户端

我有一个C#客户端指向这个Web服务(在VisualStudio中通过添加服务引用并指向wsdl url生成)。当我在C#中收到keyList对象时,第一部分(整数键)显示为0。 如果我将Java自定义类型更改为在KeyList类型中使用int key(而不是Integer key),那么它对于C#客户机就可以正常工作

我想看看这两种情况下(使用int和Integer)的wsdl是否有很大的不同,但结果表明唯一的区别是minOccurs属性

使用整数键时

<xs:element name="key" type="xs:int" minOccurs="0" /> 

}整数在java中可以为空,这就是为什么您会看到
minOccurs=“0”
int不能为空,这就是minOccurs丢失的原因。在C中,int(或相同的Int32)不能为null,因此它不需要
minOccurs=“0”
。问题最有可能出现在VisualStudio代理生成器中

它应该已经为该元素生成了C#中的int(
Int32?
int?
Nullable
):

<xs:element name="key" type="xs:int" minOccurs="0" /> 

如果尚未生成“keySpecified”,则可以查看如何使用生成代理。它的选项比VisualStudio中公开的选项多得多。另一种可能的解决方案是在java端使用int,因为它直接映射到C端的int。

这实际上是一个C问题,而不是java问题-您的问题主要涉及C客户端的行为,而不是java客户端。重新标记。能否发布visual studio为您生成的类?另外,是否使用“添加服务引用”或“添加Web引用”来完成此操作?为键指定keySpecified=true可从服务返回正确的值。谢谢!你就是德米特里。我被这个问题困扰了两天。终于可以解决了。
private int keyField;
private bool keyFieldSpecified;

private int?[] numsField;
private PropertyChangedEventHandler PropertyChanged;
private int resultField;
private bool resultFieldSpecified;

public event PropertyChangedEventHandler PropertyChanged;

public keyList();
protected void RaisePropertyChanged(string propertyName);

[XmlElement(Form=XmlSchemaForm.Unqualified, Order=0)]
public int key { get; set; }
[XmlElement("nums", Form=XmlSchemaForm.Unqualified, IsNullable=true, Order=1)]
public int?[] nums { get; set; }
[XmlElement(Form=XmlSchemaForm.Unqualified, Order=2)]
public int result { get; set; }
[XmlIgnore]
public bool resultSpecified { get; set; }
<xs:element name="key" type="xs:int" minOccurs="0" /> 
if(res.keySpecified){
    // use res.Key
} else {
    // assume res.Key is null
}