我需要生成一个像这样的SOAP请求。使用KSOAP创建SOAP请求Android
SOAP-REQUEST
POST /TennisMasters/TennisMasters.Listener.asmx HTTP/1.1
Host: playinkstudio.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://playinktennismasters.com/authenticateUser"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<authenticateUser xmlns="http://playinktennismasters.com/">
<user>string</user>
</authenticateUser>
</soap:Body>
</soap:Envelope>
我使用KSOAP2,建立这个请求。
private static String SOAP_ACTION = "http://playinktennismasters.com/authenticateUser";
private static String NAMESPACE = "http://playinktennismasters.com/";
private static String METHOD_NAME = "authenticateUser";
private static String URL = "http://playinkstudio.com/TennisMasters/TennisMasters.Listener.asmx";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("user", "A Json String will be here");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER12);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
} catch (Exception e) {
e.printStackTrace();
}
这是我从调试中得到的请求。
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://www.w3.org/2003/05/soap-encoding" xmlns:v="http://www.w3.org/2003/05/soap-envelope">
<v:Header />
<v:Body>
<authenticateUser xmlns="http://playinktennismasters.com/" **id="o0" c:root="1"**>
<user **i:type="d:string"**>{"email":"[email protected]","UserDate":"Feb 22, 2012 7:01:24 PM","GearId":0,"GearValue":0,"Income":0,"Level":0,"MatchResult":0,"MatchType":0,"OfferId":0,"OpponentId":0,"Partners":0,"ExhibitionCount":0,"PowerRuns":0,"PowerServes":0,"PowerShots":0,"Seeds":0,"Energy":0,"Cash":0,"Stamina":0,"Strength":0,"SubLevel":0,"TotalEnergy":0,"TotalStamina":0,"TrainingId":0,"Agility":0,"UserId":0,"Age":0,"ActivityId":0,"gearIsGift":0}</user>
</authenticateUser>
</v:Body>
</v:Envelope>
我不知道为什么额外的属性像“id”和“c:root”被添加到authenticateUser中。 和i:type =“d:String”中的额外属性。 请有人给我一个很好的例子或教程,可以指导我创建一个像上面的请求,真的需要帮助谢谢。
我假设你显示的第一个请求,你从soapUI得到它?你必须知道ksoap2的enveloppe看起来与发送的soap有点不同,比如说使用普通soap在netbeans中完成的java程序。这不是问题,两者都会得到相同的结果,它只是xml。您是否从您的请求中收到错误消息,或者您只是担心额外的附加属性? – shadesco 2012-02-23 03:33:07
HI请连接我在这个聊天室..我有一些怀疑这就是为什么,https://chat.stackoverflow.com/rooms/146715/soap – 2017-06-15 05:17:44