国家铁路查询问题与SOAP请求。该操作无法完成。 (NSURLErrorDomain错误-1012。)

时间:2015-03-28 13:51:27

标签: ios swift soap wsdl

我正在尝试使用下面找到的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)
    }

1 个答案:

答案 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定义。