SOAPEngine 的 completeWithDictionary 为空
Posted
技术标签:
【中文标题】SOAPEngine 的 completeWithDictionary 为空【英文标题】:SOAPEngine's completeWithDictionary is empty 【发布时间】:2015-09-14 10:07:43 【问题描述】:我在 Swift ios 中有这个函数,使用 SOAPEngine 来获取响应:
func testLogin()
//working url
var urlString = "http://192.168.1.3/magento/api/v2_soap/"
let url = NSURL(string: urlString)
var client = SOAPEngine()
client.userAgent = "SOAPEngine"
client.actionNamespaceSlash = true
client.version = VERSION_1_1
client.setValue("joemar", forKey: "username")
client.setValue("NewAPIKey", forKey: "apiKey")
client.setValue("urn:Magento", forKey: "namespace")
client.requestURL(url, soapAction: "login", completeWithDictionary: (statusCode : Int, response : [NSObject : AnyObject]!) -> Void in
client = SOAPEngine()
client.userAgent = "SOAPEngine"
client.actionNamespaceSlash = true
client.version = VERSION_1_1
let sessionId : AnyObject? = response
client.setValue(sessionId, forKey: "sessionId")
client.requestURL(url, soapAction: "customerCustomerList", completeWithDictionary: (statusCode : Int, response : [NSObject : AnyObject]!) -> Void in
let data : AnyObject? = response
, failWithError: (error : NSError!) -> Void in
println("failed!")
)
) (error : NSError!) -> Void in
println("failed!")
但是,“completeWithDictionary”始终为空。我在 android 中使用了完全相同的功能,并且运行良好。 Android 使用的是 ksoap2 库。 请帮忙。谢谢。
【问题讨论】:
您确定请求有效吗?另外,它真的失败了还是空了? (例如,您是否获得错误处理程序,或者您是否使用空对象获得成功?)您能否提供提要信息以查看它是否有效? 谢谢吉里。是的,该请求是有效的,并且它正在运行在同一后端服务器上的 Android 对应项上工作。 statusCode 是 200,但响应字典有 0 个键/值对(空对象成功)。顺便说一句,您会注意到这是对具有不同端点的相同服务的后续调用。能够在第一次调用时获取 sessionId 值并传递给下一次。 【参考方案1】:尝试设置client.responseHeader = true
提示:如果您想要更直接的支持,请使用 SOAPEngine 项目的 github 问题
【讨论】:
嗨,达尼洛,谢谢。我暂时离开了 SOAPEngine,因为我无法解决这个问题,因为它很紧急。我已经使用 AFNetworking 手动创建了 SOAP 消息。现在它正在工作。如果在未来的项目中有更多时间,我将再次尝试使用 SOAPEngine。泰。以上是关于SOAPEngine 的 completeWithDictionary 为空的主要内容,如果未能解决你的问题,请参考以下文章