2017-04-18 7 views
2

ウェブサービスを次のように呼び出して、 "ネットワーク接続が失われました"というランダムなエラーが発生し、デバイスとシミュレータのアプリケーションクラッシュが発生します。私はGoDaddyはデラックスホスティングでPHPのバックエンドを使用しているはランダムに「ネットワーク接続が失われました」を取得します。 "Alamofire.request"を使用して迅速に

Optional(Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={NSUnderlyingError=0x608000a5f950 {Error Domain=kCFErrorDomainCFNetwork Code=-1005 "(null)" UserInfo={NSErrorPeerAddressKey=<CFData 0x60800029fea0 [0x1136c0df0]>{length = 16, capacity = 16, bytes = 0x10020050a63e1c720000000000000000}, _kCFStreamErrorCodeKey=-4, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=http://lokomart.com/services/getSearchResultData, NSErrorFailingURLKey=http://lokomart.com/services/getSearchResultData, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-4, NSLocalizedDescription=The network connection was lost.}) 

//怒鳴る

Alamofire.request(url, method: .post, parameters: ["limit" : "3" , "offset" : self.storeArray?.count ?? 0], encoding: URLEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in 

       switch(response.result) { 
       case .success(_): 

私のエラー。

も迅速な3

+0

次よりよいこの設定を行うには、あなたがデバイス上でのみ、シミュレータ上の問題を参照していますか? – shallowThought

+0

デバイスとシミュレータを使用した場合、問題は発生しません。 – user3091160

+0

解決を得ましたか?私のコードと同様に非常にランダムで、デバイスとシミュレータの両方で –

答えて

1

、この問題への直接的な解決策はありませんが、私が試してみました増加PHPバックエンド処理のタイムアウト60秒での作業も、それだけで、300から600に変更し、Apacheサーバのタイムアウトを試してみました頻度を減らし、私が考えているベストソリューションではなく、失敗をキャッチしてリクエストを再作成して送信するか、何か他のことをやめるようにします。

Alamofire.request(url, method: .post, parameters: ["limit" : "3" , "offset" : self.storeArray?.count ?? 0], encoding: URLEncoding.default, headers: nil).validate().responseJSON { (response:DataResponse<Any>) in 

    switch(response.result) { 
     case .success(_): 
     break; 
     case .failure(_ let error): { 
     //redo all the work or stop 
     break; 
     } 

または私がやっているどのようなコードの上

if(response.result.isFailure) { 
    print("Error occured") 
    if(self.retryCounter! < 2) {      
     self.retryCounter! += 1 
     //recreating post request and sending again 
      return 
    } 
    else { 
     return 
    } 
} 

がうまく仕事をして、次のようです。 "isFailure"プロパティが常にfalseのように、コードを編集して "validate"メソッドを追加しましたが、結果データの一部が更新されないことに注意してください。 これが問題を解決することを願っています。

+0

良い解決策はありませんが、正常に動作します。 ありがとう – user3091160

+0

@ user3091160これはバグだと助けにならない –

+1

素晴らしい人「JUGAD」ありがとう – Abhishek

1

今日、私は同じエラーがありました。 AppleがiOS 9に追加したプロパティを覚えています。NSAppTransportSecurityあなたはこれを追加する、唯一のテストのために無効にしてみてください:

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

することができます。この答えhttps://stackoverflow.com/a/31623388/2711766

+0

あなたのアプリケーションはそのコードでAppStoreにアクセスしません – redent84

+0

上記の解決策はランダムな問題の報告ではありません。 –

関連する問題