У меня есть NSURLConnection, который получает выходные данные из URL, указывающего на скрипт php на моем сервере.
В большинстве случаев все работает нормально, и данные извлекаются в полном виде.
Однако иногда я получаю NULL или поврежденные (т.е. нижнюю половину) данные по адресу:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
Когда это происходит, если я перезагружаю соединение, оно всегда возвращает тот же нулевой или поврежденный блок данныхдля запроса.
РЕДАКТИРОВАТЬ *: Я понял, что когда я получаю то, что я думал, было нулевыми данными, я фактически получал данные, но NSString, созданный из этих данных, равен нулю.Я все еще не понимаю, почему, хотя.Мой вывод php-кодировки всегда UTF-8, поэтому я не думаю, что это проблема кодирования, и к тому же он работает большую часть времени с этим.
Я проверил php-скрипт с тем же запросом для проверкичто это не проблема на стороне сервера или со сценарием php, и подтвердил, что это НЕ.
Мой код ниже:
-(void)setUpConnectionAndMakeRequest {
NSString *URLpath = @"http://www.example.com/myphp.php";
NSURL *myURL = [[NSURL alloc] initWithString:URLpath];
NSMutableURLRequest *myURLRequest = [NSMutableURLRequest requestWithURL:myURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60];
[myURL release];
[myURLRequest setHTTPMethod:@"POST"];
//I added this because I thought it may be a problem relating to cache but it isn't
NSURLCache *cache = [NSURLCache sharedURLCache];
[cache removeAllCachedResponses];
NSString *httpBodystr = [NSString stringWithString:@"command=runscript"];
[myURLRequest setHTTPBody:[httpBodystr dataUsingEncoding:NSUTF8StringEncoding]];
[mailData setData:nil]; //mailData is a NSMutableData object which accumulates the data retrieved by the request
[NSURLConnection connectionWithRequest:myURLRequest delegate:self];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
NSString *untrimmedDataSTR = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; //Created so I can see the data (always text) in NSLog
NSLog(@"Live Data: %@", untrimmedDataSTR); //This is where I see that the data is broken or null when it shouldn't be
[mailData appendData:data]; //Append accumulated data to NSMutableData object used later in my app.
[untrimmedDataSTR release];
}
Любая помощь будет принята с благодарностью.