0

AFNetworking を使用しており、JSON 構造を POST しようとしています。問題は、 のようなものではなく、{"my_property":"my value"}としてフォーマットしていること{my_property:'my_value'}です。ほとんどの場合、最初の引用符のセットが失われても問題ないと思いますが、JSON 以外の単一引用符をどうすればよいかわかりません。 NSDictionary から JSON を作成しています。さらに、「{」が必要な場所に [Object] 参照が含まれています。これは、サーバーが取得しているものです。

...
num_matches: 32,
view_instance: properties_in_view: [Object],
[ { view_instance_ctr: 0, view_id: '4e5bb37258200ed9aa000011' },
...

ターゲットは iOS 5.0 なので、NSJSONSerialization を使用して JSON を作成していると想定しています (ただし、これについてはまだ検証していません)。私が送信した辞書は、isValidJSONObject を使用して JSON に検証します。連載版をプリントアウトすると見栄えがします。コードの単純化されたバージョンは次のようになります。

NSDictionary *params = myDictionaryThatValidatesToJSON;
httpClient.parameterEncoding = AFJSONParameterEncoding;
NSMutableURLRequest *request = [httpClient 
     requestWithMethod:@"POST" path:@"" parameters:params];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation start];

bigDummy = NO行方不明のフラグがあることを願っています。

4

2 に答える 2

0

マイケルは正しいです。彼のデータのコードを使用して、これを使用して JSOn パラメータで POST リクエストを実行しています:

// dataDictionary はパラメータ ディクショナリです

    NSError *error = nil;

    NSData* jsonData = [NSJSONSerialization dataWithJSONObject:dataDictionary options:NSJSONWritingPrettyPrinted error:&error];

    //NSString *jsonOut = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

    AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:webURL]];

    [httpClient setParameterEncoding:AFFormURLParameterEncoding];

    NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST"
                                                            path:@"Webservice URL"
                                                      parameters:nil];

    NSMutableData *body = [NSMutableData data];

    [body appendData:jsonData];

    [request setHTTPBody:body];
    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/json" forHTTPHeaderField:@"content-type"];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

    [httpClient registerHTTPOperationClass:[AFHTTPRequestOperation class]];

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

        // Print the response body in text

        NSLog(@"Response: %@", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]);


    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        NSLog(@"Error: %@", error);


    }];
    [operation start];
于 2013-02-27T10:25:14.740 に答える
0

あなたの問題はサーバー側にあると思います-つまり。質問で引用したデバッグは、サーバーが受け取った生の JSON テキストではなく、サーバー上の一部のコンポーネントが行った再解釈です。

于 2012-03-05T07:48:16.923 に答える