2014-09-30 36 views
0

我一直在嘗試使用NSURLSession將POST請求發送到服務器(我知道使用郵遞員工作)。NSURLRequest HTTPBody爲空

我創建請求如下:

NSMutableURLRequest *request = [self createRequestWithPath:[self getPathForEndpoint:endpoint]]; 
[request setHTTPMethod:@"POST"]; 
[request setHTTPBody:params]; 

params從序列化參數字符串(我知道是一個合法的參數串)創建的,如下所示:

NSData *params = [[self serialiseParameters:data] dataUsingEncoding:NSUTF8StringEncoding]; 

(參考,序列化的參數字符串是類似於@"title=MyTitle&somethingElse=0"

從搜索SO和其他地方,這似乎是這樣的設置請求的正確方法是使NSURLSession可以POST數據,但服務器在HTTP正文中沒有顯示任何內容。

是否有另一種POST數據的方式?

回答

0

這是固定的,根本不使用setter setHTTPBody,而是使用NSJSONSerialization來代替。工作代碼如下所示:

// Encode parameters 
NSData *postData = [NSJSONSerialization dataWithJSONObject:data options:0 error:nil]; 

// Construct request 
NSMutableURLRequest *request = [self createRequestWithPath:[self getPathForEndpoint:endpoint]]; 
request.HTTPMethod = @"POST"; 
request.HTTPBody = postData; 

我以前用這個試過,但由於某些原因,當我用[request setHTTPBody],設置屬性就沒有正常工作直接解決了這一點。

+1

'setHTTPBody:'和'.HTTPBody ='可能會導致前者不起作用。有些東西是用' - (NSString *)serialiseParameters:(NSDictionary *)parameters'。 – Max 2014-09-30 12:47:37

+0

我檢查了參數,他們出來,因爲我期望他們(但現在只是使用它的GET參數)。 – GTF 2014-09-30 14:00:50