2012-07-24 49 views
0

我有一個iOS應用程序試圖向Rails服務器發送一個post請求。請求方法的集合主體看起來像這樣。NSString dataUsingEncoding不編碼轉義引號

- (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]; 
+0

您確定您的Web服務需要單個JSON字典作爲數據,而不是說字典數組嗎?關於你打印的字符串有什麼有趣的地方 - 「參數」是它將你上傳的字符串視爲一個缺少值的鍵(所以它的NULL)。 '{'之後的引號只是將所有添加的字符串作爲主體。 – 2012-07-24 23:12:11

回答

0

問題解決了。這個問題實際上是服務器端的導軌。我沒有聲明內容類型,並且這樣做解決了問題。

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

在執行請求之前添加它會導致Rails正確識別轉義的json。