3

AFNetworkingを使用してWebサービスにPOSTリクエストを送信しています

これは私が送信する必要があるJSONです-

{
   “LinkedTo” : {
                            “IndividualStakeholder” : “”,
                            “GroupedStakeholder” : “”,
                            “LandParcelStakeholder” : “”,
                            “Communications” : “”,
                            “Team” : “”,
                            “Issue” : “”,
                            “Event” : “”
                        }
   “userId” : 170,
   “projectId”: 12
}

これは私が使用しているコードです-

NSString *jsonData = [self JSONString:jsonData1];

NSString *jsonDataこの時点での値は

{\ "LinkedTo \":{\ "IndividualStakeholder \":\ "\"、\ "GroupedStakeholder \":\ "\"、\ "LandParcelStakeholder \":\ "\"、\ "Communications \":\ "\ "、\" Team \ ":\" \ "、\" Issue \ ":\" \ "、\" Event \ ":\" \ "}、\" userId \ ":170、\" projectId \ ": 4}

NSURL *url = [[NSURL alloc]initWithString:@"https://somedomain.com/"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc]initWithBaseURL:url];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
                             jsonData, @"jsonText" , nil];
NSURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"https://somedomain.com/api/stakeholders" parameters:params];

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
    success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON){
        NSLog(@"Inside the success block %@",JSON);
    }
    failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON){
        NSLog(@"json text is: %@", JSON);
        NSLog(@"Request failed with error: %@, %@", error, error.userInfo);
    }];
[operation start];



-(NSString*)JSONString :(NSString*)aString{
    NSMutableString *s = [NSMutableString stringWithString:aString];
    [s replaceOccurrencesOfString:@"\"" withString:@"\\\"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
    [s replaceOccurrencesOfString:@"/" withString:@"\\/" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
    [s replaceOccurrencesOfString:@"\n" withString:@"\\n" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
    [s replaceOccurrencesOfString:@"\b" withString:@"\\b" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
    [s replaceOccurrencesOfString:@"\f" withString:@"\\f" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
    [s replaceOccurrencesOfString:@"\r" withString:@"\\r" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
    [s replaceOccurrencesOfString:@"\t" withString:@"\\t" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
    return [NSString stringWithString:s];
}

サーバーでのエラーは次のとおりです-予期せず「/stakeholders」で終わるURLのリクエスト形式が認識されません。投稿されたJSONを逆シリアル化するときにasp.netがスローするエラーです

私がクライアントで受け取っている出力は

リクエストはエラーで失敗しました:エラードメイン=com.alamofire.networking.errorコード=-1011"期待されるステータスコード[インデックスの数:100(1つの範囲内)、インデックス:(200-299)]、500を取得" UserInfo = 0x8e95e60 {NSErrorFailingURLKey = https://somedomain.com/api/stakeholders、NSLocalizedDescription =期待されるステータスコード[インデックスの数:100(1つの範囲内)、インデックス:(200-299)]、500を取得}、{NSErrorFailingURLKey = " https ://somedomain.com/api/stakeholders "; NSLocalizedDescription = "期待されるステータスコード[インデックスの数:100(1つの範囲内)、インデックス:(200-299)]、500を取得"; } 2013-02-25 11:03:44.669 NetworkPlugin [60069:c07]

4

2 に答える 2

3

AFHTTPClientsetParameterEncodingメソッドをチェックアウトしAFJSONParameterEncodingて、投稿に実際に有効なJSONHTTP本文が含まれるようにします。ここで宣言し、コメントしました

于 2013-02-25T23:21:28.573 に答える
1

私が見ているのは、など","の値の代わりに送信していること"15", "18"です。正しいJSONKit関数を使用してjsonデータを変更してみてください。

于 2013-02-25T19:49:44.487 に答える