0

私のiPhoneアプリで、リンクに画像を投稿したいです。その画像は電話ギャラリーから選択しています。その画像をnsstringに変換しました。しかし、私は投稿時にエラーがあります。

エラー: (「エラー ドメイン=org.brautaset.JSON.ErrorDomain Code=3 \"認識できない先頭文字\" UserInfo=0x9e599a0 {NSLocalizedDescription=認識できない先頭文字}" )

以下のコードを使用しています

画像を文字列に変換する場合:

CGFloat compression = 0.25f;

NSData *imagedata = UIImageJPEGRepresentation(self.profileImageView.image, compression);

profileObj.profileImageString = [[NSString alloc]initWithData:imagedata encoding:NSASCIIStringEncoding];
profileObj.profileImageString = [profileObj.profileImageString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSLog(@"profileObj.profileImageString: %@",profileObj.profileImageString);

リンクへの投稿:

appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

ProfileObject *profile_obj=obj;
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@upload/register/john@gmail.com/password/774e4b7b118994b1c58d71c088834d43ca2937623319f6b7b6c48a1846132027/iPhone/1/%@",MainUrl,profile_obj.profileImageString]];

NSLog(@"url is---%@",url);

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setHTTPMethod:@"POST"];
[request setValue:@"multipart/form-data" forHTTPHeaderField:@"Content-Type"];
NSError* error = nil;

NSURLResponse* response;

NSData* result = [NSURLConnection sendSynchronousRequest:request  returningResponse:&response error:&error];

NSString *dataString=[[NSString alloc]initWithData:result encoding:NSUTF8StringEncoding];
NSMutableDictionary *getResponseDict = [[NSMutableDictionary alloc] init];
[getResponseDict addEntriesFromDictionary:[dataString JSONValue]];
NSString  *responseStr=[getResponseDict objectForKey:@"message"];
NSLog(@"responseStr is....%@",responseStr);
return responseStr;

すみません、私は英語が下手です。気にしないでください。

前もって感謝します

4

2 に答える 2

1

画像データはいつでも base64 でエンコードできます。

これにより、投稿に正しい文字列が含まれていることを確認できます。

http://svn.cocoasourcecode.com/MGTwitterEngine/NSData+Base64.mのような拡張機能を使用して、必要なものを取得できます。

于 2013-02-08T07:45:46.117 に答える
1

画像投稿について

NSString  *imgPath = fullPathOfYourImage;
    if([[NSFileManager defaultManager] fileExistsAtPath:imgPath])
    {
        [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];                                                        
        [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"photo\"; filename=\"YourImageName.png\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
                                                                                                               ^..YourImageName….^

        [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[NSData dataWithContentsOfFile:imgPath]];
        [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    }
于 2013-02-08T08:09:09.613 に答える