如何在swift中绕过本地连接

时间:2016-03-07 06:06:34

标签: ios swift web-services

我只想测试我的本地Web服务调用以检查来自服务器的数据。我不知道在这里快速连接到本地主机我提供了我练习的示例代码

override func viewDidLoad() {

let request = NSMutableURLRequest(URL: NSURL(string: "http://localhost:9000/api/v1/EntityList")!)
 var theConnection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: true)!

}


func connection(connection: NSURLConnection, canAuthenticateAgainstProtectionSpace protectionSpace: NSURLProtectionSpace) -> Bool {
    return true
}

  func connection(connection: NSURLConnection, canAuthenticateAgainstProtectionSpace protectionSpace: NSURLProtectionSpace) -> Bool {
    return true
}

func connection(connection: NSURLConnection, didReceiveAuthenticationChallenge challenge: NSURLAuthenticationChallenge) {

    if (challenge.protectionSpace.host == "http://localhost:9000/api/v1/EntityList") {

        challenge.sender!.useCredential(NSURLAuthenticationChallenge.autoContentAccessingProxy() as! NSURLCredential, forAuthenticationChallenge: challenge)

    }


}

我的日志声明是

  error=Optional(Error Domain=NSURLErrorDomain Code=-1004 "Could not    connect to the server." UserInfo={NSUnderlyingError=0x7fc9705525a0 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "(null)" UserInfo=   {_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}},    NSErrorFailingURLStringKey=http://localhost:9000/api/v1/EntityList,   NSErrorFailingURLKey=http://localhost:9000/api/v1/EntityList,    _kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=61,    NSLocalizedDescription=Could not connect to the server.})

2 个答案:

答案 0 :(得分:1)

错误的原因是API请求无法找到您提供的地址。

您提供的地址是

http://localhost:9000/api/v1/EntityList

您必须将其更改为

http://domainName.com/api/v1/EntityList

其中domainName.com应该是本地网络中服务器的名称或DNS。这可以是您的PC或其他能够充当Web服务器的PC。

您需要注意的另一件事是您必须绕过NSTranportSecurity令牌,因为iOS 9不支持不安全的请求。简而言之,您的请求应该是支持HTTPS的服务器

您可以通过将以下代码添加到plist

中来绕过此问题
    <key>NSAppTransportSecurity</key>
<dict>

  <key>NSAllowsArbitraryLoads</key>
      <true/>
</dict>

如果您需要更多相关信息,请访问以下链接

LINK

LINK 2

希望这可以帮助你......

答案 1 :(得分:0)

您必须通过服务器或系统IP地址拨打电话

例如 你必须更换这个

http://localhost:9000/api/v1/EntityList

到此

http://<your server ip address>/api/v1/EntityList

并确保您的防火墙没有阻止端口80有很多方法如何解锁它只是谷歌..

如果您收到 NSTranportSecurity 错误,则必须将此行添加到 Info.plist 文件中,因为从iOS 9开始,它不支持不安全的请求。

我的 Info.plist 文件快照附在

下面

SNAPSHOT

我建议你这样做,因为这比上面的方法更安全

SHAP