1

このアプリケーションを作成しています。これは、Web サーバー上の PHP スクリプトと通信します。

昨夜は完璧に機能していました。しかし、今日、2 つの接続で応答がありません。

ブラウザで NSURL リンクを試してみましたが、問題なく動作します。また、接続の1つが機能しますが、2つの接続が機能しないと言ったように?

- (void) getVitsTitelByID:(int)id {

NSString *url = [NSString stringWithFormat:@"http://webserver.com   /ivitserdk.php?function=gettitelbyid&id=%d", id];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:1.0];
connectionTitelByID = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}

connectionDidReciveData:

if(connection == connectionTitelByID){
    responseTitel = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}

connectionDidFinishLoading:

if(connection == connectionTitelByID){
    titelLabel.text = responseTitel;
}

私はそれを試してデバッグしました。

responseTitel は (null) のようです。

助けが必要です:)

4

1 に答える 1

2

didReceiveData は N 回 (回) 呼び出されることがあります。データを可変データバッファに保存し(キューに入れます)、didFinishでそれを文字列に読み込みます

モックコード:

- (void) getVitsTitelByID:(int)identifier {
    NSString *url = [NSString stringWithFormat:@"http://webserver.com/ivitserdk.php?function=gettitelbyid&id=%d", identifier];
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:1.0];
    connectionTitelByID = [[NSURLConnection alloc] initWithRequest:request delegate:self];

    dataForConnectionTitelByID = [NSMutableData data];
    [connectionTitelByID start];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    if(!data.length) return;

    if(connection == connectionTitelByID)
        [dataForConnectionTitelByID appendData:data];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    if(connection == connectionTitelByID) {
        id str = [[NSString alloc] initWithData:dataForConnectionTitelByID encoding:NSUTF8StringEncoding];
        NSLog(@"%@",str);
        dataForConnectionTitelByID = nil;
        connectionTitelByID = nil;
    }
}
于 2012-11-29T13:21:29.673 に答える