【发布时间】:2014-11-03 09:10:24
【问题描述】:
我正在尝试在 Objective-C iOS 中使用 Maginto SOAP API。我可以调用登录 API 并获取 SessionID,但是当我尝试使用相同的 SessionID 调用其他 API 时,它会出现以下错误。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>5</faultcode><faultstring>Session expired. Try to relogin.</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
我不明白为什么会出现此错误消息。如果有人知道解决方案,请帮助我。
提前谢谢你。
这是我的登录代码 -
-(void)make_call_to_maginto_api_login{
NSString *soapMessage = @" \
<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns1=\"urn:Magento\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"> \
<SOAP-ENV:Body> \
<ns1:login> \
<apiUser xsi:type=\"xsd:string\">UserName</apiUser> \
<apiKey xsi:type=\"xsd:string\">Password</apiKey> \
</ns1:login> \
</SOAP-ENV:Body> \
</SOAP-ENV:Envelope>";
NSURL *url = [NSURL URLWithString:@"http://www.hostname.com/index.php/api/v2_soap/"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSString *msgLength = [NSString stringWithFormat:@"%lu",(unsigned long)[soapMessage length]];
[request addValue:@"application/soap+xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"http://www.hostname.com/login" forHTTPHeaderField:@"SOAPAction"];
[request addValue:msgLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if(connection)
{
self.webData = [NSMutableData data];
}
else
{
NSLog(@"theConnection is null");
}}
如果有人有解决方案,请分享,这对我来说真的很好。谢谢你:)
【问题讨论】:
-
你是怎么做到的?请问您如何获得会话ID API?
-
以前是 SOAP 请求中的问题,请对此进行更改,以便可以正常工作。
-
谢谢我做到了,你能用soap调用.svc服务吗?
-
不知道 SOAP 太慢所以我们编写自己的 API 进行交互。如果你愿意,我可以在这里发布我的代码,它可以完美地对抗 Magento SOAP 服务。
标签: ios objective-c magento soap