2017-10-26 3 views
8

私はSwiftを初めて利用しています。私はシミュレータ上でうまく動作するシンプルなアプリケーションを構築しました。私は自分のデバイス(iOS 11.0.2のiPhone 6s)でも同じことを実行しており、サーバーに接続できません。私の電話でSwiftプロジェクトを実行するとTIC TCP Connが失敗する

これらのエラーを取得:

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() 
} 

EDIT:

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

+0

コードを入力する必要があります。 TICとは何ですか? – hasan83

+0

@ hasan83 "TIC TCP Conn Failed"は、基本的な設定上の問題がある場合に生成される標準エラーです(例えば、サンドボックスされておらず、アウトバウンドネットワーク接続を開始する権限が与えられているmacOSアプリで見たことがあります) 。 – Rob

+0

httpまたはhttpsに接続していますか?あなたのhttpがあなたのサーバURLをplistで使うのに安全だと設定しなければならない場合 – hasan83

答えて

14

エラー-1004はURLError.cannotConnectToHostです。何らかの理由でサーバーに接続できません。

コメントでは、URLはhttp://127.0.0.1となっています。現在のマシンはlocalhostです。そのURLを物理的な電話機で使用する場合は、Webサーバーを電話で検索します。笑シミュレータあなたのコンピュータ、localhostであるので、それはシミュレータ上で動作します。

あなたのiPhoneがWebサービスを実行しているマシンに解決できるURLが必要です。たとえば、ローカルネットワーク上のWebサービスを実行しているコンピュータのIPアドレスを確認し、iPhoneが同じネットワーク上のWi-Fiに接続されていることを確認し、LAN上のコンピュータにその固有のIP番号を使用します192.168.0.x)。

+0

です。もちろん、Xcodeのシミュレータを使用していたときに電話で盲目的に実行されていました思っているから.. 絶対に正しいです。たくさんありがとう! すべていいよ! – Aster

0

ソケットメッセージを送受信しているときに同じ問題が発生していました。私はpushにSocket.ioとFirebaseを使用していますが、エラーはnode.jsのバックエンドにありました。 エラーは、マングースバージョンが非難されたことでした。このエラーがiOS Endで発生するたびに、node.jsバックエンドチームに赤色のクラッシュログを探すよう依頼してください。彼らは確かにフロントエンドでこのエラーを引き起こす問題を見つけるでしょう。お役に立てれば !!

0

私の場合、私はローカルホストのIPアドレスを変更していません。

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

が最初に私はURL上で使用していますので、私は同じエラーを得たんだ...

後、私は190.177.0.22

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

別のコーナーケースにはlocalhostで変更しましたもしあなたがngrokのようなものを使用していて、まだ動作していないのであれば、電話はサービスプロバイダのネットワークや無線LANに接続されていません。

私の主な電話機は、サービス外れの電話機の2番目の電話機で動作していました。

関連する問題