0

メソッドを呼び出して特定のレコードに添付ファイルをアップロードするための apexrest Web サービスの呼び出し。そのため、Json をハードコーディングしました。

-(void)uploadToSalesforce
{   
    NSData *imagedata = UIImageJPEGRepresentation(imagePreview.image, 1.0);
    int datalength = [imagedata length];

    NSString *filename = [NSString stringWithFormat:@"Supload_iPhone_%d.jpg",datalength];

    NSString *req = [NSString stringWithFormat:@"{\n\"name\":\"%@\",\n\"Body\": \"%@\"\n,\"ParenId\":%@\"\n}",filename,imagedata,receivedrecordid];
    const char *utfString = [req UTF8String];
    NSData *postData = [NSData dataWithBytes:utfString length:strlen(utfString)];
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];  
    NSMutableURLRequest *requestUrl = [[NSMutableURLRequest alloc] init ];
    [requestUrl setURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/services/apexrest/Account/",receivedinstanceurl]]];
    [requestUrl setHTTPMethod:@"POST"];
    [requestUrl setValue:postLength forHTTPHeaderField:@"Content-length"];
    [requestUrl setValue:[NSString stringWithFormat:@"Bearer %@",receivedaccesstoken] forHTTPHeaderField:@"Authorization"];
    [requestUrl setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [requestUrl setHTTPBody:postData];

    NSURLResponse *response;
    NSError *err;
    NSData *reponseData = [NSURLConnection sendSynchronousRequest:requestUrl returningResponse:&response  error:&err];
    NSString *res = [[NSString alloc] initWithData:reponseData encoding:NSASCIIStringEncoding];
}

それに応じて、あると言います

[{"message":"Unexpected parameter encountered during deserialization: Name at [line:2, column:9]","errorCode":"JSON_PARSER_ERROR"}]

コンソールでは JSON は正しいようですが、パラメーター「名前」を解析できません。これは IOS コードによるものではないと思います。それとも何か別のフォーマットがありますか?

4

1 に答える 1

0

ラインで

NSString *req = [NSString stringWithFormat:@"{\n\"name\":\"%@\",\n\"Body\": \"%@\"\n,\"ParenId\":%@\"\n}",filename,imagedata,receivedrecordid];

JSONにキー値"の文字がありません。ParentIdそのはず:

NSString *req = [NSString stringWithFormat:@"{\n\"name\":\"%@\",\n\"Body\": \"%@\"\n,\"ParenId\":\"%@\"\n}",filename,imagedata,receivedrecordid];

そのため、Salesforce Web サービスの逆シリアル化で例外がスローされていました。

于 2013-10-16T05:49:27.980 に答える