HTTP PUTメソッドでサーバー側にbase64エンコードされた画像文字列を渡しています。何回か試してみましたが、応答としてエラーメッセージが表示されています。そのエラーメッセージは、サーバー側でnull値が取得されているためです。私はアンドロイドコードで、同じことを確認して、うまく動作しています。私は私のコードを以下に添付しています。画像アップロードの問題 - base64エンコーディング
SBJSON *parser = [[SBJSON alloc] init];
NSString *url=[NSString stringWithFormat:@"The URL i am using"] ;
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"XXXXX" forHTTPHeaderField:@"USER_AGENT"];
[request setHTTPMethod:@"PUT"];
NSString *input=[NSString stringWithFormat:@"abc[image]=%@",base64encodedString];
[request setHTTPBody:[input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSASCIIStringEncoding];
NSDictionary *statuses = [parser objectWithString:json_string error:nil];
[parser release];
[json_string release];
return statuses;
私はこのようなサーバ側からのエラーメッセージを取得しています:「xxxxxx.jpgを 『識別』コマンドで認識されていません。」
解決策をお勧めします。
最後に、「application/x-www-form-urlencoded」からコンテンツタイプを「multipart/form-data」に変更する必要があることがわかりました。誰もこの方法でBase encoded stringsを渡す方法を教えてください。 Pls ...私は過去20日間この問題の背後にいます...
allowLossyConversion:データのYESは良い考えではありません。 サーバー側で受け取ったものをダンプしてみてください。 – ssteinberg
@ssteinberg:私はサーバー側から来るエラーメッセージを追加しました。あなたの助言にも感謝します。返信いただきありがとうございます。 – Praveen