2012-05-03 64 views
2

我打算張貼JSON數據發佈JSON數據? 我讀了asihttprequest tutorial,發現它總是用asiformdatarequest發佈數據,asihttprequest和asiformdatarequest之間的區別是什麼,如果我只想發佈json數據,我該怎麼辦?先謝謝。如何使用asihttprequest

UPDATE:是的,它的工作原理,但效果不好,我用一些工具的測試數據,並接收一些額外的數據:

POST/HTTP/1.1 
Host: 192.168.0.113 
User-Agent: Ushi.com/1.0 CFNetwork/548.1.4 Darwin/11.3.0 
Content-Length: 58 
+0

您是否嘗試過運行的代碼,看看它活像KS? – aroth

+0

看到我的更新 – Tan

+0

這不是「額外的數據」,這是所需的HTTP頭 - 它應該肯定在那裏,並不是一個問題。 – JosephH

回答

7

您可以以JSON格式發佈的文本數據這樣

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 

[request setRequestMethod:@"POST"]; 
[request addRequestHeader:@"Accept" value:@"application/json"]; 
[request addRequestHeader:@"content-type" value:@"application/x-www-form-urlencoded"]; 
[request addRequestHeader:@"User-Agent" value:@"iPad"]; 

API本身設置的用戶代理雖然可以自己設置太

request.allowCompressedResponse = NO; 
request.useCookiePersistence = NO; 
request.shouldCompressRequestBody = NO; 
[request setPostBody:[NSMutableData dataWithData:[jsonRequest dataUsingEncoding:NSUTF8StringEncoding]]]; 
[request startSynchronous]; 
+1

如果您正在發送json,那麼將'Content-Type'設置爲'application/json'會更合適。 – Yang