TIC TCP Conn在我的手机上运行Swift项目时失败

时间:2017-10-26 22:26:07

标签: ios swift

我是Swift的新手。我构建了一个在模拟器上工作正常的简单应用程序。我在我的设备上运行相同的程序(带有iOS 11.0.2的iPhone 6s)并且它无法连接到服务器。

收到这些错误:

2017-10-26 18:16:02.489134-0400 myproj[1451:206438] TIC TCP Conn Failed [1:0x1c0176800]: 1:61 Err(61)
2017-10-26 18:16:02.489771-0400 myproj[1451:206438] Task <0C30ADDC-4A0E-4815-A701-2EF0A7CF5F04>.<1> HTTP load failed (error code: -1004 [1:61])
2017-10-26 18:16:02.490293-0400 myproj[1451:206440] Task <0C30ADDC-4A0E-4815-A701-2EF0A7CF5F04>.<1> finished with error - code: -1004

请帮我理解这个错误。

编辑:

以下是调用服务器的代码:

func postRequest(postData: NSDictionary, postHeaders: NSDictionary, endPoint: String,
                 onComplete: @escaping ((NSDictionary)->Void), callbackParams: NSDictionary = NSMutableDictionary()) {
    let url:URL = baseUrl.appendingPathComponent(endPoint)
    let session = URLSession.shared
    let request = NSMutableURLRequest(url: url)
    request.httpMethod = "POST"
    request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
    var paramString = ""
    for (key, value) in postData{
        paramString = paramString + (key as! String) + "=" + (value as! String) + "&"
    }

    request.allHTTPHeaderFields = postHeaders as? [String : String]
    request.httpBody = paramString.data(using: String.Encoding.utf8)

    let task = session.dataTask(with: request as URLRequest, completionHandler: {
        (data, response, error) in
        guard let _:Data = data, let _:URLResponse = response  , error == nil else {
            return}
        let json: Any?
        do {
            json = try JSONSerialization.jsonObject(with: data!, options: [])
        }
        catch {
            return
        }
        var serverResponse = json as? NSDictionary
        DispatchQueue.main.async{
            for (key, value) in serverResponse!{
                callbackParams.setValue(value, forKey: key as! String)
            }
            onComplete(callbackParams)
        }
    })
    task.resume()
}

编辑:

Adding screen shot of info.plist, I had set Allow Arbitrary Loads to True as indicated in other posts, but didn't solve 谢谢!

4 个答案:

答案 0 :(得分:35)

错误-1004是URLError.cannotConnectToHost。由于某种原因,它无法连接到服务器。

在评论中,您说网址为http://127.0.0.1。那是localhost,当前的机器。如果您在物理电话上使用该URL,它将在手机上查找网络服务器 Lol。它适用于模拟器,因为模拟器 是您的计算机localhost

您需要一个iPhone可以解析为运行您的Web服务的计算机的URL。例如,找出在本地网络上运行Web服务的计算机的IP,确保您的iPhone在同一网络上的wifi上,然后在LAN上使用该唯一的IP号码(可能更像是192.168.0.x的)。

答案 1 :(得分:0)

当我发送/接收套接字消息时,我遇到了同样的问题!我使用Socket.io和Firebase进行推送,错误发生在node.js后端。 错误是mongoose版本已弃用 。每当iOS End出现此错误时,请求node.js后端团队查找红色崩溃日志。他们肯定会在前端找到导致此错误的问题。希望这会有所帮助!!

答案 2 :(得分:0)

在我的情况下,我不会更改本地主机IP地址。

Example : @"http://Localhost/Host name/index.pnp/apiname?";

最初我使用了上面的网址,所以我得到了同样的错误......

后来我改为Localhost改为190.177.0.22

Example : @"http://190.177.0.22/Host name/index.pnp/apiname?";

答案 3 :(得分:0)

如果您使用像ngrok这样的东西并且仍然无法正常工作,那么另一个极端情况是手机未连接到服务提供商网络或无线网络。

在我的情况下,我的主要电话正在工作,第二个服务电话没有。