0

我有一个 iOS 应用程序试图向 Rails 服务器发出发布请求。请求方法的集合体如下所示。

- (void)setBody:(NSString *)body{
    requestString = body;
    NSLog(@"request string: %@",requestString);
    [request setHTTPBody:[requestString dataUsingEncoding:NSUTF8StringEncoding]];
}

当我检查日志中的请求字符串时,我看到它正确输出为:

{"commit":"Create Order","order":{"price":"1","street_address":"(null)","state":"(null)","country":"USA","city":"(null)","zipcode":"(null)"}}

但是,当数据到达我的 Web 应用程序时,我得到的是原始的未转义引号。

Parameters: {"{\"commit\":\"Create Order\",\"order\":{\"price\":\"1\",\"street_address\":\"(null)\",\"state\":\"(null)\",\"country\":\"USA\",\"city\":\"it\",\"zipcode\":\"(null)\"}}"=>nil}

我怀疑这是一个 Rails 问题,尽管它可能是一种可能性。

有什么建议么?

原始字符串在别处声明为

NSString *order = [NSString stringWithFormat:@"{\"commit\":\"Create Order\",\"order\":{\"price\":\"%@\",\"street_address\":\"%@\",\"state\":\"%@\",\"country\":\"%@\",\"city\":\"%@\",\"zipcode\":\"%@\"}}",@"1",streetAddressFieldText,stateFieldText,@"USA",cityFieldText,zipFieldText];
4

1 回答 1

0

问题解决了。问题实际上是带有导轨的服务器端。我没有声明内容类型,这样做解决了这个问题。

[request setValue:@"application/json" forHTTPHeaderField:@"content-type"];

在请求执行之前添加它会导致 Rails 正确识别转义的 json。

于 2012-07-24T23:05:57.603 回答