1

iOS から JSON を送信しようとしています。これは私がこれまでに持っているものです:

+ (NSDictionary *)SendJSON:(NSString *)jsonString toAddress:(NSString *)address
{    
    NSData *postData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];

    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:address]];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody:postData];

    NSURLResponse *response;
    NSData *POSTReply = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
    NSLog(@"%@",[NSJSONSerialization JSONObjectWithData:POSTReply options:kNilOptions error:nil] );
    NSDictionary *jsonresponse = POSTReply ? [NSJSONSerialization JSONObjectWithData:POSTReply options:kNilOptions error:nil] : nil;

    return jsonresponse;
}

次のように jsonString を送信すると、正常に動作します。

NSString *jsonString = [NSString stringWithFormat:@"username=%@&password=%@", self.txtUsername.text, self.txtPassword.text];

しかし、JSON 形式を使用して送信しようとすると:

@"{ \"username\" : \"%@\", \"password\" : \"%@\" }"

なぜうまくいかないのですか?

PS: この情報は Rails サーバーに送信されています。

4

1 に答える 1

3

POST 本文で JSON を送信しているため、おそらく Content-Type を適切に設定する必要があります。

x-www-form-urlencoded を置き換えます。

    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
于 2013-04-21T20:31:19.130 に答える