我在VS2013 BizTalk中使用此WDSL生成SOAP-Web-Proxy时出现问题。
似乎VS没有生成正确的xsd和cs。当我从xsd生成一个实例时,它看起来像这样:
由VS生成:
<ns0:timeseriesValues xmlns:ns0="http://test.com/abc/DataService/xyz">
<ns0:id>mdsId_0</ns0:id>
<ns0:res>day</ns0:res>
<ns0:quality>prognosis</ns0:quality>
<ns0:timeseries>
<ns0:time>1999-05-31T13:20:00.000-05:00</ns0:time>
<ns0:value>10</ns0:value>
</ns0:timeseries>
<ns0:timeseries>
<ns0:time>1999-05-31T13:20:00.000-05:00</ns0:time>
<ns0:value>10</ns0:value>
</ns0:timeseries>
<ns0:timeseries>
<ns0:time>1999-05-31T13:20:00.000-05:00</ns0:time>
<ns0:value>10</ns0:value>
</ns0:timeseries>
</ns0:timeseriesValues>
但是应该是这样,与WS交谈:
<ns0:sendTemp xmlns:ns0="http://www.test.com/DataService.xsd">
<ns0:id>138846</ns0:id>
<ns0:res>hour</ns0:res>
<ns0:quality>prognosis</ns0:quality>
<ns0:timeseries>
<ns0:time>2017-08-27T23:00:00+02:00</ns0:time>
<ns0:value>16.7</ns0:value>
</ns0:timeseries>
<ns0:timeseries>
<ns0:time>2017-08-28T00:00:00+02:00</ns0:time>
<ns0:value>16</ns0:value>
</ns0:timeseries>
</ns0:sendTemp>
WSDL:
<?xml version='1.0' encoding='UTF-8'?>
<wsdl:definitions
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:ns="http://www.test.com/DataService.xsd"
xmlns:wsc="http://www.test.com/DataService.xsd"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
targetNamespace="http://www.test.com/DataService.xsd">
<wsdl:types>
<xs:schema
xmlns="http://test.com/abc/DataService/xyz"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="http://test.com/abc/DataService/xyz">
<xs:complexType name="timeseriesValues">
<xs:sequence>
<xs:element name="id" type="xs:string" />
<xs:element name="res">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="day" />
<xs:enumeration value="hour" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="quality" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="prognosis"/>
<xs:enumeration value="allocation"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="timeseries">
<xs:complexType>
<xs:sequence>
<xs:element name="time" type="xs:dateTime" />
<xs:element name="value" type="xs:double" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.test.com/DataService.xsd"
xmlns:xyz="http://test.com/abc/DataService/xyz"
attributeFormDefault="qualified"
elementFormDefault="qualified"
targetNamespace="http://www.test.com/DataService.xsd">
<xs:import namespace="http://test.com/abc/DataService/xyz" />
<xs:element name="sendPreise" type="xyz:timeseriesValues" />
<xs:element name="sendPreiseResponse" type="xs:anyType" />
<xs:element name="sendTemp" type="xyz:timeseriesValues" />
<xs:element name="sendTempResponse" type="xs:anyType" />
</xs:schema>
</wsdl:types>
<wsdl:message name="sendTempResponse">
<wsdl:part name="sendTempResponse" element="wsc:sendTempResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="sendTemp">
<wsdl:part name="parameters" element="ns:sendTemp">
</wsdl:part>
</wsdl:message>
<wsdl:message name="sendPreise">
<wsdl:part name="parameters" element="ns:sendPreise">
</wsdl:part>
</wsdl:message>
<wsdl:message name="sendPreiseResponse">
<wsdl:part name="sendPreiseResponse" element="wsc:sendPreiseResponse">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="event_PortType">
<wsdl:operation name="sendPreise">
<wsdl:input name="sendPreise" message="wsc:sendPreise">
</wsdl:input>
<wsdl:output name="sendPreiseResponse" message="wsc:sendPreiseResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="sendTemp">
<wsdl:input name="sendTemp" message="wsc:sendTemp">
</wsdl:input>
<wsdl:output name="sendTempResponse" message="wsc:sendTempResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="event_Binding" type="wsc:event_PortType">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="sendPreise">
<wsdlsoap:operation soapAction="sendPreise" />
<wsdl:input name="sendPreise">
<wsdlsoap:body parts="parameters" use="literal" />
</wsdl:input>
<wsdl:output name="sendPreiseResponse">
<wsdlsoap:body parts="sendPreiseResponse" use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="sendTemp">
<wsdlsoap:operation soapAction="sendTemp" />
<wsdl:input name="sendTemp">
<wsdlsoap:body parts="parameters" use="literal" />
</wsdl:input>
<wsdl:output name="sendTempResponse">
<wsdlsoap:body parts="sendTempResponse" use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="event">
<wsdl:port name="event_Port" binding="wsc:event_Binding">
<wsdlsoap:address location="http://TEST:80/WS/" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
这是一个错误还是有人能告诉我它为什么这样做?
它是根元素Name我的意思。
timeseriesValues
sendTemp或sendPreise。
请求是&#34; sendTemp&#34;或&#34; sendPreise&#34;但后来我遇到了序列化问题。
Schema定义:sendPreise type = timeseriesvalues sendTemp type = timeseriesvalues
但只有&#34; timeseriesvalues&#34; as root-element-Name有效。
答案 0 :(得分:0)
我没有看到任何错误。
XML中的命名空间符合WSDL Error for v,pa(v): bp, oil
List of 2
$ bp : chr [1:3] "low" "medium" "high"
$ oil: chr [1:2] "low" "high"
num [1:12] 0.9 0.1 0.1 0.9 0 1 0.1 0.9 0.4 0.6 ...
Error in compileCPT(list(eh, oil.eh, inf.oil.eh, bp.oil, rt.inf.eh)) :
Table dimensions do not match!
id被定义为WSDL中的字符串,因此也定义为模式。因此,当它生成它时,它将生成一个字符串示例。
res被定义为白天或小时,所以这也是正确的。
时间序列下的值被定义为double(不是int),因此它是作为示例生成的
时间是日期时间,即生成的样本中的日期时间。
答案 1 :(得分:0)