gpt4 book ai didi

android - Android 上的 SOAP 网络服务

转载 作者:搜寻专家 更新时间:2023-11-01 09:17:37 25 4
gpt4 key购买 nike

我正在尝试使用 ksoap2 库连接到 SOAP 网络服务。我已经阅读了很多关于它的文档,但我被卡住了,因为我的请求不是一个普通的请求。

我需要在发送请求之前指定一些 header 。

当使用 soap 客户端测试 web 服务时,我还需要将它放在 soap enveope header 部分:

<SOAP-ENV:Header>
<mns:AuthIn xmlns:mns="http://enablon/wsdl/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<UserInfo xsi:type="wsdlns:AuthHeader">
<EnaHomeSite xsi:type="xsd:string">sss</EnaHomeSite>
<EnaUserName xsi:type="xsd:string">sadsa</EnaUserName>
<EnaPassword xsi:type="xsd:string">qwertf</EnaPassword>
</UserInfo>
</mns:AuthIn>
</SOAP-ENV:Header>

我的其余代码类似于 this方法

模拟器需要一些时间来处理,所以我假设它联系了服务器,但是调用 ...call crases with:

org.xmlpull.v1.XmlPullParserException: expected: END_TAG {http://schemas.xmlsoap.org/soap/envelope/}Body (position:END_TAG </{http://schemas.xmlsoap.org/soap/envelope/}SOAP-ENV:Fault>@1:505 in java.io.InputStreamReader@43ef45e8) 

我的问题是如何将上述 header 附加到我的请求中?

我没能为 ksoap 编写好文档。也许一些教程或示例。谁能指点我一些文档。我找到了 javadoc,但它很薄。

我还尝试格式化我自己的原始 HTTP 请求。 (设法在 iPhone 上这样做并且工作得很好)。但是我似乎无法添加请求的主体。我的意思是包含所有 header namespace 和调用所需数据的大 soap xml。任何关于这个方向的指示也将不胜感激。

非常感谢,伙计们。

干杯,亚历克斯

最佳答案

我遇到了同样的问题,为此我按照以下方式创建了标题,


public static Element[] addheader()
{
Element[] header = new Element[1];
header[0] = new Element().createElement("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd","Security");
header[0].setAttribute(null, "mustUnderstand","1");
Element usernametoken = new Element().createElement("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "UsernameToken");
// usernametoken.addChild(Node.TEXT,"");
usernametoken.setAttribute("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", "Id", "UsernameToken-4");
header[0].addChild(Node.ELEMENT,usernametoken);
Element username = new Element().createElement(null, "n0:Username");
username.addChild(Node.TEXT, "username_value");
//username.setPrefix("n0", null);
usernametoken.addChild(Node.ELEMENT, username);
Element pass = new Element().createElement(null, "n0:Password");
//pass.setPrefix("n0",null);
pass.setAttribute(null, "Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText");
pass.addChild(Node.TEXT, "password_value");

usernametoken.addChild(Node.ELEMENT, pass);
return header;
}

并将此 header 添加为 soapEnvelope.headerOut = addheader();

因为它对我有用,所以它对你也有用。

关于android - Android 上的 SOAP 网络服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3564467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com