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

您可能需要适当地设置 Content-Type,因为您在 POST 正文中发送 JSON。

这应该可以解决问题,替换您的 x-www-form-urlencoded:

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