0

私はずっと見つめていましたが、これを理解できないようです。私が見るJSONの例はどれもURLにメソッド名が含まれていないので、それが問題になる可能性があると思います。これが私のコードです:

NSString *username = @"xxxx";
NSString *password = @"xxxx";
NSString *loginURL = @"http://www.xxxxxx.com/services/api/rest/json?method=xxxxxx.auth.gettoken";

NSURL *url = [NSURL URLWithString:loginURL];

NSString *JSONString = [NSString stringWithFormat:@"{\"username\":\"%@\",\"password\":\"%@\"}", username, password];

NSData *JSONBody = [JSONString dataUsingEncoding:NSUTF8StringEncoding];

NSMutableURLRequest *loginRequest = [[NSMutableURLRequest alloc] initWithURL:url];
loginRequest.HTTPMethod = @"POST";
loginRequest.HTTPBody = JSONBody;

NSOperationQueue *queue = [NSOperationQueue new];

[NSURLConnection sendAsynchronousRequest:loginRequest 
                                   queue:queue 
                       completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){

                           // Manage the response here.
                           NSString *txt = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
                           NSLog(@"%@", txt);
                       }];

SquidManを使用してreuestをスヌーピングしていますが、アクセスログリストが次のようになっていることに気付きました:www.xxxxx.com/services/api/rest/json?--DIRECT / .....メソッド名がありません。これにSquidManを使用するのはこれが初めてですが、あると思います。

私が返すメッセージは、パラメータのユーザー名が欠落しているということです。

前もって感謝します。

4

2 に答える 2

1

問題が見つかりました。Web サービスを作成していないため、データを JSON 形式で送信するのが間違っているようです。「¶m=value¶m2=value2」の形式でデータを投稿すると、機能します。

    NSString *JSONString = [NSString stringWithFormat:@"&username=%@&password=%@",
                      [username stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
                      [password stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSData *JSONBody = [JSONString dataUsingEncoding:NSUTF8StringEncoding];

NSMutableURLRequest *loginRequest = [[NSMutableURLRequest alloc] initWithURL:url];
loginRequest.HTTPMethod = @"POST";
loginRequest.HTTPBody = JSONBody;
于 2012-05-23T00:47:53.360 に答える
0

リクエストに対して を指定してContent-Typeいないため、サーバーがデータの解釈方法を認識していない可能性があります。を割り当てた後、次の行をコードに追加してみてくださいloginRequest

[loginRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

それが役立つことを願っています。

于 2012-05-22T04:13:43.097 に答える