0

この問題は非常にトリッキーです。AFNetworking を使用して IOS を介して json データを渡すと。サーバーも null 値を返します。ただし、curl を使用してサーバー側をテストしましたが、結果は正しいです。この問題についてはわかりません。

サーバーコードは次のとおりです。

        $response['return'] = $data;

        if (get_magic_quotes_gpc()) {
            $data = stripslashes($data);
        }

        $response['sssss'] = $data;

        $data = json_decode($data, TRUE);
        $response['return json'] = $data ? $data : 'dddddddd';

        $json_errors = array(
            JSON_ERROR_NONE => 'No error has occurred',
            JSON_ERROR_DEPTH => 'The maximum stack depth has been exceeded',
            JSON_ERROR_CTRL_CHAR => 'Control character error, possibly incorrectly encoded',
            JSON_ERROR_SYNTAX => 'Syntax error',
        );
        $response['json error'] = $json_errors[json_last_error()];

        $response['p'] = $data->name;

        $response['d'] = 'test';

iOSコード:

        NSURL *url = [NSURL URLWithString:@"myapi"];
        AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
        [httpClient setDefaultHeader:@"Accept" value:@"application/json"];
        [httpClient registerHTTPOperationClass:[AFJSONRequestOperation class]];
        [httpClient setParameterEncoding:AFJSONParameterEncoding];

        NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:dishParameter,@"dish", nil];
        [httpClient postPath:@"dish" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {

            for (id key in responseObject) {
                NSLog(@"key:%@   value:%@", key, [responseObject objectForKey:key]);
            }


        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
             NSLog(@"error:%@",error);
        }];

応答は、構文エラーはなく、サーバーは料理パラメーターの値を取得できないと述べています。ただし、$data から stripslashes 関数を使用すると、$data は null になります。

誰でも私にいくつかの提案をすることができますか?

4

1 に答える 1

0

$dataタイプ文字列ですか?JSONからスラッシュを削除するのはなぜですか?構文をねじ込みます。やめてください。 無効なJSON形式json_decodeであるため、nullを返します。

于 2012-11-05T05:52:51.627 に答える