У меня возникла странная и раздражающая проблема с моими запросами к нашему веб-сервису.
Я пытаюсь отправить строки в кодировке base64 через JSON (вместе с некоторым другим содержимым) с помощью методов NSURLRequest и NSURLConnection.
Приведенный ниже код работает для небольших изображений в кодировке base64, таких как аватары размером 64x64 пикселей, но он не работает для больших строк b64 по какой-то странной причине и возвращает ошибку «Bad Request , 400».
Я использую метод POST и длина строки составляет около 10 000 символов. Веб-сервис работает для всего, кроме этих больших строк, я пробовал 3 разных решения для синтаксического анализа b64, и ни одно из них не работает.
К сожалению, я являюсь кодером внешнего интерфейса и имею небольшой опыт работы с веб-сервисами, поэтому любая помощь приветствуется.
NSData *postData = [JSONRequest dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:URLRequest]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
[request setTimeoutInterval:9999.0f];
[request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
[request setHTTPShouldUsePipelining:NO];
NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:delegateData];
[connection start];
[connection release];
[request release];
NSLog(@"Connection to %@!",URLRequest);
И ответ пойман здесь:
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
NSLog(@"didRecieveResponse");
// cast the response to NSHTTPURLResponse so we can look for 404 etc
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
NSLog(@"Response:%@ StatusCode: %i",[NSHTTPURLResponse localizedStringForStatusCode:[httpResponse statusCode]],[httpResponse statusCode]);
if ([httpResponse statusCode] >= 400)
// do error handling here
}
Есть что-то, что мне не хватает?