java - 使用 java 指定 SOAP 响应中元素的顺序

标签 java soap response

我有一个 Web 服务,它返回一个数据集对象,其中包含当前天气预报以及某个县/州的 0 个或多个天气警报。数据集对象仅包含一个 Weather 对象和一个 Alerts 对象数组。其中一个客户希望拥有它,因此响应首先给出天气而不是警报。有没有办法指定响应元素的顺序?我以为我可以更改 WSDL 以首先绘制天气图,然后绘制警报,但这没有任何作用。

这是通用 WSDL 表:
(嗯,它在预览中显示格式化,但在发布后没有显示...我如何在这里发布格式化的 XML?我尝试使用反引号以及 pre 和代码)。

<wsdl:definitions ...>
 <wsdl:types>
  <schema elementFormDefault="qualified" targetNamespace="http://ws.sample.com" xmlns="http://www.w3.org/2001/XMLSchema">
   <import namespace="http://objects.sample.com"/>
   <element name="getAll">
    <complexType>
     <sequence>
      <element name="county" type="xsd:string"/>
      <element name="state" type="xsd:string"/>
      <element name="latitude" type="xsd:double"/>
      <element name="longitude" type="xsd:double"/>
     </sequence>
    </complexType>
   </element>
   <element name="getAllResponse">
    <complexType>
     <sequence>
      <element name="getAllReturn" type="tns1:DataSet"/>
     </sequence>
    </complexType>
   </element>
   <complexType name="ArrayOf_tns1_Alert">
    <sequence>
     <element maxOccurs="unbounded" minOccurs="0" name="item" type="tns1:Alert"/>
    </sequence>
   </complexType>
  </schema>
  <schema elementFormDefault="qualified" targetNamespace="http://objects.sample.com" xmlns="http://www.w3.org/2001/XMLSchema">
   <import namespace="http://ws.sample.com"/>
   <complexType name="Alert">
    <sequence>
     <element name="county" nillable="true" type="xsd:string"/>
     <element name="endDate" nillable="true" type="xsd:dateTime"/>
     <element name="locationCode" nillable="true" type="xsd:string"/>
     <element name="startDate" nillable="true" type="xsd:dateTime"/>
     <element name="state" nillable="true" type="xsd:string"/>
     <element name="title" nillable="true" type="xsd:string"/>
     <element name="warning" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
   <complexType name="Weather">
    <sequence>
     <element name="chancePrecipitation" type="xsd:int"/>
     <element name="period" nillable="true" type="xsd:string"/>
     <element name="skyConditions" nillable="true" type="xsd:string"/>
     <element name="temperature" type="xsd:int"/>
     <element name="temperatureType" nillable="true" type="xsd:string"/>
     <element name="temperatureUnit" nillable="true" type="xsd:string"/>
     <element name="windDirection" nillable="true" type="xsd:string"/>
     <element name="windSpeed" type="xsd:int"/>
     <element name="windUnit" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
   <complexType name="DataSet">
    <sequence>
     <element name="weather" nillable="true" type="tns1:Weather"/>
     <element name="alert" nillable="true" type="impl:ArrayOf_tns1_Alert"/>
    </sequence>
   </complexType>
  </schema>
 </wsdl:types>
   <wsdl:message name="getAllResponse">
      <wsdl:part element="impl:getAllResponse" name="parameters"/>
   </wsdl:message>
   <wsdl:message name="getAllRequest">
      <wsdl:part element="impl:getAll" name="parameters"/>
   </wsdl:message>
   <wsdl:portType name="TSTWeather">
      <wsdl:operation name="getAll">
         <wsdl:input message="impl:getAllRequest" name="getAllRequest"/>
         <wsdl:output message="impl:getAllResponse" name="getAllResponse"/>
      </wsdl:operation>
   </wsdl:portType>
   <wsdl:binding name="TSTWeatherSoapBinding" type="impl:TSTWeather">
      <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
      <wsdl:operation name="getAll">
         <wsdlsoap:operation soapAction=""/>
         <wsdl:input name="getAllRequest">
            <wsdlsoap:body use="literal"/>
         </wsdl:input>
         <wsdl:output name="getAllResponse">
            <wsdlsoap:body use="literal"/>
         </wsdl:output>
      </wsdl:operation>
   </wsdl:binding>
   <wsdl:service name="TSTWeatherService">
      <wsdl:port binding="impl:TSTWeatherSoapBinding" name="TSTWeather">
         <wsdlsoap:address location="http://localhost:8282/Services/service/TSTWeather"/>
      </wsdl:port>
   </wsdl:service>
</wsdl:definitions>

我不知道如何指定服务响应的顺序。

最佳答案

在许多情况下,仅更改 WSDL 并不会更改服务,而是由服务决定 XML 中元素的顺序。

关于java - 使用 java 指定 SOAP 响应中元素的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1294975/

相关文章:

java - 将结果集保存为字符串

.NET WCF 错误生成不正确的 SOAP 1.1 错误代码值

php - CodeIgniter RESTful,异步/后台进程

php - 在 laravel/dingo API 上使用 Transformer

java - 在java中实现equals方法

java - AsynchronousFileChannel 抛出 java.nio.file.NoSuchFileException

objective-c - 寻找有关在iOS中访问NWS严重警报的建议

基于 HTTP2 的基于 Java SOAP 的 WebService 端点

swift - NSURLSession 响应字符串完成 block - Swift

java - 将图像从对话框拖放到 Activity 时出现问题