我正在尝试从Android项目调用webservice,但我无法传递任何参数。
我需要构建一个这样的请求:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="www.mywebservice.com">
<SOAP-ENV:Body>
<ns1:MyMethodName>
<ns1:appUser>0</ns1:appUser>
</ns1:MyMethodName>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>但是使用ksoap2,我得到了这样的结果:
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header />
<v:Body>
<MyMethodName xmlns="www.mywebservice.com">
<appUser>0</appUser>
</MyMethodName>
</v:Body>
</v:Envelope>我的代码是:
SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME);
request.addProperty("appUser",0);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setAddAdornments(false);
envelope.implicitTypes = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(URL);
httpTransport.debug = true;
httpTransport.call(SOAP_ACTION, envelope);我尝试了很多示例,但似乎都不起作用--我无法构建正确的XML请求。
发布于 2018-01-28 19:59:12
我解决了这个问题:
公共类MyNewClass扩展SoapSerializationEnvelope { public MyNewClass (int version) { super(version);} @Override public void (XmlSerializer写入器)抛出IOException { env = "http://schemas.xmlsoap.org/soap/envelope/";String tem = "www.mywebservice.com";writer.startDocument("UTF-8",true);writer.setPrefix("SOAP-ENV",env);writer.setPrefix("ns1",项目);writer.startTag(环境,“信封”);writer.startTag(环境,"Body");writer.startTag(项目,"MyMethodName");writeBody(写入者);writer.endTag(项目,"MyMethodName");writer.endTag(环境,"Body");writer.endTag(env,“信封”);writer.endDocument();}}使用
新的SoapSerializationEnvelope(SoapEnvelope.VER11); = SoapSerializationEnvelope信封
我使用新创建的类:
MyNewClass envelope = new MyNewClass (SoapEnvelope.VER11);https://stackoverflow.com/questions/48477199
复制相似问题