使用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」; }
謝謝你,我真切地想出了一個解決方案。我把它寫入了一個NSThread(我承認它非常重要,但我並沒有想到這一點),然後請求一直工作到結束。 Wireshark表明,請求直到最後才能工作。 – Erle 2010-10-13 18:56:03
@Erie如果以某種方式添加線程解決了問題,使用startAynchronous也可能解決該問題。線程往往會增加複雜性並且很難重現錯誤,所以最好避免,除非有很好的理由。 – JosephH 2010-10-13 19:01:26