2011-07-29 60 views
0

我有正在作出POST到服務器的工作MacOS的應用程序。我更改了POST的URL並停止工作。ASIFormDataRequest具有空POST體

我下載Tuffcode(嗅探器),這表明我使用新的URL時,POST正文是空的!

- (IBAction)grabURLInBackground:(id)sender 
{ 
    NSURL *url = [NSURL URLWithString:@"url1"]; 
    //NSURL *url = [NSURL URLWithString:@"url2"]; 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
    [request setDelegate:self]; 
    [request addRequestHeader:@"Content-Language" value:@"en"]; 
    [request addRequestHeader:@"Content-Type" value:@"application/x-www-form-urlencoded"]; 
    [request addRequestHeader:@"Connection" value:@"keep-alive"]; 
    [request addRequestHeader:@"Cookie" value: [NSString stringWithFormat:@"botcust2=%@", sn]]; 
    [request setShouldAttemptPersistentConnection:NO]; 

    [request addPostValue:[input stringValue] forKey:@"input"]; 
    [input setStringValue:@""]; 
    [request startAsynchronous]; 

} 

從url1切換到url2從良好的POST BODY轉到空的POST BODY。那怎麼可能? URL如何確定發送的內容? 起初我以爲是不正確解釋發佈新的服務器,但如果Tuffcode是正確的,應用程序甚至不發送數據?

或者,也許有一些我不知道如何HTTP的工作原理?我很困惑...

一些日誌:

2011-07-29 12:28:36.018 ChatBot[6764:707] [STATUS] Starting asynchronous request <ASIFormDataRequest: 0x10188d420> 
2011-07-29 12:28:36.021 ChatBot[6764:6403] 
==== Building an application/x-www-form-urlencoded body ==== 
input=hello 
==== End of application/x-www-form-urlencoded body ==== 
2011-07-29 12:28:36.027 ChatBot[6764:6403] [CONNECTION] Request <ASIFormDataRequest: 0x10188d420> will not use a persistent connection 
2011-07-29 12:28:36.280 ChatBot[6764:6403] [STATUS] Request <ASIFormDataRequest: 0x10188d420> finished uploading data 
2011-07-29 12:28:36.374 ChatBot[6764:6403] [STATUS] Request <ASIFormDataRequest: 0x10188d420> received response headers 
2011-07-29 12:28:36.375 ChatBot[6764:6403] [STATUS] Request <ASIFormDataRequest: 0x10188d420> finished downloading data (0 bytes) 
2011-07-29 12:28:36.376 ChatBot[6764:6403] [STATUS] Request finished: <ASIFormDataRequest: 0x10188d420> 
+0

也要注意,使用HTML表單在瀏覽器中運行,這兩個URL工作罰款 –

回答

0

爲什麼你要爲您發佈後的字符串向右空?

[request addPostValue:[input stringValue] forKey:@"input"]; 
[input setStringValue:@""]; 

編譯器可能會切換這兩行的順序,並且您提交的是空字符串。爲什麼不嘗試在第二行刪除的情況下運行它?

+0

這將清除UI中的輸入。我試圖刪除那條線,但它並沒有真正的幫助。我注意到有時候它會顯示「通過peer重置」,有時輸入會顯示在嗅探器中(沒有響應)。但對於舊網址,它始終都可以同時使用 –

0

事實過了一會兒,但我剛剛碰到類似的事情。就像你我有一個ASIHTTPRequest設置與應用程序的前一個實例,但在新版本中的職位是空的(沒有數據發送)工作;我知道在另一端的服務器工作正常(相同的代碼,但新的主機/ URL),所以我知道它不可能是這樣。

在玩了一段時間之後,我記得舊的URL是submission.php,但這次它是它自己的文件夾(所以只是/ submission /),在我的新URL的末尾添加了index.php讓事情再次起作用;所以我想它只是不喜歡在URL末尾沒有文件。

TL;博士 - 確保您所提交的URL與文件名末尾(即:的index.php或類似)

NBSP