Web サービスへのリクエストで、奇妙で厄介な問題が発生しています。
NSURLRequest および NSURLConnection メソッドを介して、base64 でエンコードされた文字列を JSON 経由で (他のコンテンツと共に) 送信しようとしています。
以下のコードは、64x64 ピクセルのアバターなど、base64 でエンコードされた小さな画像では機能しますが、何らかの奇妙な理由で大きな b64 文字列では機能せず、"Bad Request , 400" エラーが返されます。
私は POST メソッドを使用しており、文字列の長さは約 10,000 文字です。Web サービスは、これらの大きな文字列を除くすべてに対して機能します。3 つの異なる b64 解析ソリューションを試しましたが、どれも機能しませんでした。
残念ながら、私はフロント エンドのコーダーであり、Web サービスの経験がほとんどないため、サポートをお願いします。
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
}
足りないものはありますか?