2010-10-12 62 views
0

使用ASIHTTPRequest進行響應時遇到了一些麻煩,這很令人擔憂。 我正在將ASIHTTPRequest的POST-Body內部的SOAP請求發送到服務器。 根據控制檯和響應數據的長度爲0,請求目前發送正常,但響應字符串爲「(空)」。 但是,當我發送SOAP-Body字符串時,使用NSLog();到Firefox插件「POSTER」的服務器我得到我想要的迴應。另一方面,如果SOAP-Request中有錯誤,則立即在ASIHTTPRequest中獲得響應。 到目前爲止,我完全沒有想法,如果有人有想法提供幫助,這將是非常善良的。在WebService上使用ASIHTTPRequest的空響應

這是我的代碼。

ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:myURL]; 
[request addRequestHeader:@"Content-Type" value:@"text/xml"]; 
NSLog(@"XML: %@",[carInsurance buildXMLString]); //Debug output 
NSMutableData *theData = [[carInsurance buildXMLString] dataUsingEncoding:NSUTF8StringEncoding]; 
[request addRequestHeader:@"Content-Length" value:[NSString stringWithFormat:@"%d",[theData length]]]; 
[request setPostBody:theData]; 
[request setRequestMethod:@"POST"]; 
NSLog(@"Headers before: %@",[[request requestHeaders] description]); //Debug output 
[request startSynchronous]; 
NSLog(@"Headers after: %@",[[request requestHeaders] description]); 

對於更好奇的一個,這裏是我的調試頭。

2010-10-12 14:39:11.945 appname [12484:207]之前的標題:{ 「Content-Length」= 1944; 「Content-Type」=「text/xml」; }

回答

1

安裝像wireshark這樣的工具,並使用它來嗅探請求和響應(使用iphone模擬器)。

假設響應也是空的,嗅探由POSTER發送的請求並將其與iPhone發送的請求進行比較。

如果還不明顯有什麼問題,請將wireshark「follow tcp stream」輸出添加到您的問題中。

+0

謝謝你,我真切地想出了一個解決方案。我把它寫入了一個NSThread(我承認它非常重要,但我並沒有想到這一點),然後請求一直工作到結束。 Wireshark表明,請求直到最後才能工作。 – Erle 2010-10-13 18:56:03

+2

@Erie如果以某種方式添加線程解決了問題,使用startAynchronous也可能解決該問題。線程往往會增加複雜性並且很難重現錯誤,所以最好避免,除非有很好的理由。 – JosephH 2010-10-13 19:01:26