我正在尝试使用下面找到的API查询National Rail Inquiries,但是我遇到了一些问题。
http://lite.realtime.nationalrail.co.uk/openldbws/
我正在尝试使用SOAPEngine64框架(https://github.com/priore/SOAPEngine)来简化发出请求的过程(使用Swift),但我似乎无法获得任何结果。
每次运行以下代码时,都会打印出此错误。有谁知道我哪里出错了?
错误:
2015-03-28 13:46:09.528 Rapid Rail UK[18994:1032065] Error Domain=NSURLErrorDomain Code=-1012 "The operation couldn’t be completed. (NSURLErrorDomain error -1012.)" UserInfo=0x7fd9a9c35e80 {NSErrorFailingURLKey=https://lite.realtime.nationalrail.co.uk/OpenLDBWS/wsdl.aspx?ver=2014-02-20, NSErrorFailingURLStringKey=https://lite.realtime.nationalrail.co.uk/OpenLDBWS/wsdl.aspx?ver=2014-02-20}
Swift代码:
var token = "<com:AccessToken><com:TokenValue>MY_TOKEN_KEY</com:TokenValue></com:AccessToken>"
var soap = SOAPEngine()
soap.header = token
soap.actionNamespaceSlash = true
var args = [
"numRows" : 10,
"crs" : "GTW"
];
soap.requestWSDL("https://lite.realtime.nationalrail.co.uk/OpenLDBWS/wsdl.aspx?ver=2014-02-20",
operation: "GetDepartureBoard",
value: args,
completeWithDictionary: { (statusCode : Int,
dict : [NSObject : AnyObject]!) -> Void in
var result:Dictionary = dict as Dictionary
NSLog("%@", result)
}) { (error : NSError!) -> Void in
NSLog("%@", error)
}
答案 0 :(得分:0)
不要使用requestWSDL,使用requestURL,不使用wsdl扩展名,直接调用asmx服务(https://lite.realtime.nationalrail.co.uk/OpenLDBWS/ldb6.asmx),并尝试将soapAction设置为http://thalesgroup.com/RTTI/2014-02-20/ldb/GetDepartureBoard。这是因为WSDL不包含soapAction属性,但需要正确解析WSDL定义。