Web services soapweb服务的XML响应格式
嗨,我正试图在谷歌应用程序引擎上创建一个SOAP web服务,我正在关注这个问题 本教程展示了一个简单的hello world教程,我成功运行了这个程序并得到了响应Web services soapweb服务的XML响应格式,web-services,google-app-engine,soap,wsdl,Web Services,Google App Engine,Soap,Wsdl,嗨,我正试图在谷歌应用程序引擎上创建一个SOAP web服务,我正在关注这个问题 本教程展示了一个简单的hello world教程,我成功运行了这个程序并得到了响应 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <ns3:sayHelloResponse xmlns:ns3=
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns3:sayHelloResponse xmlns:ns3="http://example.com/">
<return>Hello, hello!</return>
</ns3:sayHelloResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
,然后在Greeter类上运行wsgen命令:
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
C:\Users\Lenovo\workspace\HelloSoapServer1>wsgen -extension -wsdl:Xsoap1.2 -cp "
./war/WEB-INF/classes" -wsdl -keep -r "./war" -d "./war/WEB-INF/classes" -s "./s
rc" com.example.Greeter
其中HelloSapServer1是项目名称,它成功创建了SOAP1.2格式的wsdl文件,然后我再次将其部署到appengine。我希望SOAP1.2版本中会有响应输出,但响应仍然与前面的相同。下面是一些代码
迎宾舱
package com.example;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.BindingType;
@WebService
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
public class Greeter {
@WebMethod
public String sayHello(String name){
return "Hello, " + name+ "!";
}
@WebMethod
public String sayGoodbye(String name){
return "Goodbye, " + name + "!";
}
}
生成的GreeterService.wsdl代码
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. -->
<definitions targetNamespace="http://example.com/" name="GreeterService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://example.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/">
<types>
<xsd:schema>
<xsd:import namespace="http://example.com/" schemaLocation="GreeterService_schema1.xsd"/>
</xsd:schema>
</types>
<message name="sayHello">
<part name="parameters" element="tns:sayHello"/>
</message>
<message name="sayHelloResponse">
<part name="parameters" element="tns:sayHelloResponse"/>
</message>
<message name="sayGoodbye">
<part name="parameters" element="tns:sayGoodbye"/>
</message>
<message name="sayGoodbyeResponse">
<part name="parameters" element="tns:sayGoodbyeResponse"/>
</message>
<portType name="Greeter">
<operation name="sayHello">
<input message="tns:sayHello"/>
<output message="tns:sayHelloResponse"/>
</operation>
<operation name="sayGoodbye">
<input message="tns:sayGoodbye"/>
<output message="tns:sayGoodbyeResponse"/>
</operation>
</portType>
<binding name="GreeterPortBinding" type="tns:Greeter">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="sayHello">
<soap12:operation soapAction=""/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
</operation>
<operation name="sayGoodbye">
<soap12:operation soapAction=""/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
</operation>
</binding>
<service name="GreeterService">
<port name="GreeterPort" binding="tns:GreeterPortBinding">
<soap12:address location="http://onemoredemo.appspot.com/hellosoapserver1"/>
</port>
</service>
</definitions>
而GreeterService_schema1.xsd代码是
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" targetNamespace="http://example.com/" xmlns:tns="http://example.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="sayGoodbye" type="tns:sayGoodbye"/>
<xs:element name="sayGoodbyeResponse" type="tns:sayGoodbyeResponse"/>
<xs:element name="sayHello" type="tns:sayHello"/>
<xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/>
<xs:complexType name="sayHello">
<xs:sequence>
<xs:element name="arg0" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sayHelloResponse">
<xs:sequence>
<xs:element name="return" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sayGoodbye">
<xs:sequence>
<xs:element name="arg0" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sayGoodbyeResponse">
<xs:sequence>
<xs:element name="return" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
就我所阅读的一些关于SOAP1.2 web服务的文章而言,wsgen工具正在生成正确的wsdl文件,但当我部署它时,它以SOAP1.1的格式给出响应。请任何人帮助我,为什么我没有以SOAP1.2协议的格式获得输出,如下所示
<?xml version="1.0"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns:e="http://[app-id].appspot.com/gevents-service">
<env:Body>
</env:Body>
我看到您的命令开始了:
wsgen-extension-wsdl:Xsoap1.2
,但后来有-wsdl-keep-r
等。。。-wsdl
的第二个外观是否可能会覆盖第一个外观以使用默认值1.1
<?xml version="1.0"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns:e="http://[app-id].appspot.com/gevents-service">
<env:Body>
</env:Body>