2010-12-04 80 views
6

基本上,我發送POST請求具有空數據體:空體在POST中ASIHTTPRequest

ASIHTTPRequest *request [ASIHTTPRequest alloc] init]; 
    [request setURL:[NSURL URLWithString:escapedUrlString]]; 
    [request setRequestMethod:@"POST"]; 
    [request addRequestHeader:@"Content-Type" value:@"application/xml"]; 
    [request startSynchronous]; 

但我每次收到此響應:檢測

不正確NSStringEncoding 0x0000值。假設NSStringEncodingASCII。將在不久的將來停止這種兼容性映射行爲。

我想知道是否必須設置發佈值。

回答

9

我沒有太多的經驗與ASIHTTPRequest包裝,但我可以看到你與alloc:init,而大多數的例子我見過它初始化有一個方便的初始化器requestWithURL:(NSURL*)url

ASIHTTPRequest *request = [AIHTTPRequest requestWithURL:escapedUrlString]; 

在猜測我」 d說這個便利的initaliser還將爲您的發佈請求設置一些必需的變量,包括NSStringEnconding

從ASIHTTPRequest文檔在http://allseeing-i.com/ASIHTTPRequest/How-to-use#handling_text_encodings

處理文本編碼

ASIHTTPRequest將嘗試讀取 從Content-Type頭接收到的數據 的文本編碼。如果它 找到文本編碼,它將設置 responseEncoding到合適的 NSStringEncoding。如果在頭文件中沒有找到 的文本編碼,它將使用 的值 defaultResponseEncoding(默認值爲 到NSISOLatin1StringEncoding)。

當調用[請求 responseString],ASIHTTPRequest將 嘗試創建從它接收的 數據的字符串,利用 的ResponseEncoding作爲源 編碼。

+0

只需在快速查看代碼後進行確認,實際上就是這樣。檢查接口文件(ASIHTTPRequest.h)以獲取有關init/dealloc方法的詳細信息。 – Rog 2010-12-05 00:10:34

3

正如Rog所說,使用initWithURL或requestWithURL。無論如何,在我的情況下,問題是我連接到一個慢速服務器和請求超時給出「不正確的NSStringEncoding值0x0000檢測」錯誤。

request.timeOutSeconds = 50; 

可以超過50個的第二次嘗試,如果你的服務器是更慢:

我解決它。