2011-07-04 28 views
1

私はコマンドを使用して、特定のURLからデータをretriveしよう:NSURLConnectionの失敗 - 1003

デリゲートで
-(NSMutableData *) callUrl: (NSString *)url withData:(NSMutableDictionary *)data delegate:(id) delegate { 

    NSURL *executeUrl = [NSURL URLWithString:<string>]; 
    NSURLRequest *request = [NSURLRequest requestWithURL: executeUrl 
          cachePolicy:NSURLRequestReloadIgnoringLocalCacheData 
          timeoutInterval:60]; 

    NSMutableData *receivedData = nil; 

    NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:delegate]; 
    if (theConnection) { 
     receivedData = [[NSMutableData data] retain]; 
    } else { 
     @throw @"Connection error"; 
    } 

    return receivedData; 
} 

(両方connectionDidFinishとconnectionDidFailWithError後)私は:私が悪い提供するとき

//some uninvasive alerts 
// release the connection, and the data object 
[connection release]; 
[receivedData release]; 

問題があります私は適切なエラーを持っている - それは良い部分です - しかし、私は2番目のURLを実行したい - 確かに良い、私は1003エラーを持っている - NSURLErrorCannotFindHost。

約1-2分後、私はurlを呼び出してデータを取得します。 私はいくつかのタイムアウトとポートビジネスを疑うが、NSURLRequestのタイムアウトを変更しても何も変わらない。

UPDATE

それが判明したように - 管理者は、WiFiネットワークを介して到達DNSサーバーでいくつかの問題がありました。コードは問題ありません。レスポンスありがとう。 似たような問題がいくつかある場合は、hostnameの代わりにip addressを試してみてください。

+0

どのように修正しましたか?あなたはIPアドレスで試しましたか?私もこの同じ問題に直面しています。お勧めします。 –

答えて

0

新しい接続を行う前に前の接続をキャンセルしてください。 アップルのiOS開発者向けドキュメントから

[self.connection cancel]; 
+0

私はそれを解放する前に接続をキャンセルしようとしました。何も影響しません。 – vitotao

1

を使用して、1003エラーがURLのホスト名が解決できない場合を指します。 wifi、オーバーロードされたDNSシナリオでDNS障害が発生しないようにするには、後で使用するためにipをhostnameから解決するか、後でホスティングを変更するつもりがない場合は直接IPアドレスをハードコードすることが望ましいです。

アップルのドキュメント:

URL Loading System Error Codes 

これらの値は、ドメイン「NSURLErrorDomain」とNSErrorオブジェクトのエラーコードプロパティとして返されます。

enum 
{ 
    NSURLErrorBadURL = -1000, 
    NSURLErrorTimedOut = -1001, 
    NSURLErrorUnsupportedURL = -1002, 
    NSURLErrorCannotFindHost = -1003,//**** 
    NSURLErrorCannotConnectToHost = -1004, 
    NSURLErrorDataLengthExceedsMaximum = -1103, 
    NSURLErrorNetworkConnectionLost = -1005, 
    NSURLErrorDNSLookupFailed = -1006, 
    ... 
    } 

1003 NSURLErrorCannotFindHost 
Returned when the host name for a URL cannot be resolved. 
Available in iOS 2.0 and later. 
Declared in NSURLError.h. 
1

私はこの問題を修正するために2つのことでした:私は無線LANの設定で8.8.8.8に私のDNSを変更し、私のNSUrlConnection

[NSURLConnection cancelPreviousPerformRequestsWithTarget:self];

  • を開始する前にこれを使用し

    1. をこれはGoogleのパブリックDNSサーバーです。

    どの人が修正したのか分かりませんが、問題は解決しました。

  • 関連する問題