我正在尝试从我的Android调用我在Google Apple Engine中创建的Web服务。测试时我得到了这个错误
org.xmlpull.v1.XmlPullParserException:expected:START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope(position:START_TAG @ 1:7 in java.io.InputStreamReader@41825db0)
请帮忙。
以下是我的代码。
private static final String SOAP_ACTION = "http://example.com/sayHello";
private static final String OPERATION_NAME = "sayHello";
private static final String WSDL_TARGET_NAMESPACE = "http://example.com/";
private static final String SOAP_ADDRESS = "http://mynewcloudcom.appspot.com/hellosoapserver";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
OPERATION_NAME);
request.addProperty("arg0","ONE");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
httpTransport.debug = true;
try {
httpTransport.call(SOAP_ACTION, envelope);
Log.v("TEST", httpTransport.requestDump);
Log.v("TEST", httpTransport.responseDump);
Object response = envelope.getResponse();
textView.setText(response.toString());
} catch (Exception exception) {
textView.setText(exception.toString());
}
我甚至尝试将soap_address更改为WSDL文件,但仍然是同样的错误。
private static final String SOAP_ADDRESS = "http://mynewcloudcom.appspot.com/GreeterService.wsdl";
WSDL文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions targetNamespace="http://example.com/" name="GreeterService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:tns="http://example.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<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 wsam:Action="http://example.com/Greeter/sayHelloRequest" message="tns:sayHello"/>
<output wsam:Action="http://example.com/Greeter/sayHelloResponse" message="tns:sayHelloResponse"/>
</operation>
<operation name="sayGoodbye">
<input wsam:Action="http://example.com/Greeter/sayGoodbyeRequest" message="tns:sayGoodbye"/>
<output wsam:Action="http://example.com/Greeter/sayGoodbyeResponse" message="tns:sayGoodbyeResponse"/>
</operation>
</portType>
<binding name="GreeterPortBinding" type="tns:Greeter">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="sayHello">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="sayGoodbye">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="GreeterService">
<port name="GreeterPort" binding="tns:GreeterPortBinding">
<soap:address location="http://mynewcloudcom.appspot.com/hellosoapserver"/>
</port>
</service>
</definitions>
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>
答案 0 :(得分:0)
感谢帮助人员。问题现在解决了。这是一个JDK问题。我使用jdk 1.6重新创建项目并部署到GAE。现在工作正常。再次感谢。多么宽慰..Phewww ...