0

PHP サーバーと iOS アプリを使用します。

NSURLConnectionサーバーにメッセージを送信するために使用します。アドレスが正しくないなど、サーバーが利用できない場合は、60 ~ 90 秒後にエラーが発生するのを待ちます。お久しぶりです。

今度はどうやって減らすの?サーバーの可用性を確認する簡単な機能はありますか?

最初に電話したら

[request setTimeoutInterval:10];
[request setHTTPBody:[message data]];

[request timeoutInterval] を確認すると、まだ 10 ではなく 240 です。とても興味深い..

接続が作成される前に呼び出しを追加すると、setTimeoutInterval:次のようになります。

[request setTimeoutInterval:10];
connection = [[NSURLConnection alloc] initWithRequest: request delegate: self];

久しぶりにリクエストが返ってきます。

4

4 に答える 4

1

ええ、タイムアウトは期待どおりには機能しません。1 つの解決策は、目的の間隔が経過した後に接続をキャンセルするタイマーを設定することです。私はReallyRandomクラスでこれを行いましたが、うまくいくようです。

次のようになります。

connection = [[NSURLConnection alloc] initWithRequest: request delegate: self startImmediately:NO];

timer = [NSTimer scheduledTimerWithTimeInterval:10
                                     target:self
                                   selector:@selector(onTimeExpired)
                                   userInfo:nil
                                    repeats:NO];

[connection start];


// When time expires, cancel the connection
-(void)onTimeExpired
{
    [self.connection cancel];
}
于 2012-05-21T18:22:58.173 に答える
1

サーバーが本当にダウンしている場合は、HTTP 要求を発行する前に、最初に到達可能性フレームワークをチェックして、サーバーに到達できるかどうかを常に確認できます。

このサンプルについては、この回答を参照してください。

iOS 4 の到達可能性ガイド

于 2012-05-21T11:08:53.367 に答える
0

timeoutIntervalメソッドでパラメータを指定して、リクエストのタイムアウト時間を短縮できます。

+ (id)requestWithURL:(NSURL *)theURL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval

ただし、サーバーが利用できないのか、単にビジーなのかを判断するのは困難です。サーバーが特定の間隔で応答しない場合は、サーバーがダウンしている可能性が高いと判断できます。それ以外の場合は、待機する必要があります。

于 2012-05-21T07:16:22.760 に答える