【问题标题】:Empty Response with ASIHTTPRequest on WebServiceWebService 上带有 ASIHTTPRequest 的空响应
【发布时间】:2010-10-12 12:49:06
【问题描述】:

我在使用 ASIHTTPRequest 获得响应时遇到了一些麻烦,这很伤脑筋。 我在 ASIHTTPRequest 的 POST-Body 中向服务器发送一个 SOAP 请求。 到目前为止,请求发送良好,但根据控制台,响应字符串为“(null)”,响应数据的长度为 0。 但是,当我发送 SOAP-Body 字符串时,我使用 NSLog(); 将其放入控制台;使用 Firefox 插件“POSTER”到服务器,我得到了我想要的响应。另一方面,只要 SOAP-Request 中有错误,就会在 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]);

比较好奇的是我的 Debug 标头。

2010-10-12 14:39:11.945 appname[12484:207] 之前的标头:{ “内容长度”= 1944; “内容类型”=“文本/xml”; }

【问题讨论】:

    标签: iphone objective-c asihttprequest


    【解决方案1】:

    安装一个类似wireshark的工具并用它来嗅探请求和响应(使用iphone模拟器)。

    假设那里的响应也是空的,嗅探 POSTER 发送的请求并将其与 iphone 发送的请求进行比较。

    如果问题仍然不明显,请将wireshark“follow tcp stream”输出添加到您的问题中。

    【讨论】:

    • 感谢您的帮助,我终于找到了解决方案。我把它放到一个 NSThread 中(我承认这很明显,但我一开始并没有想到),然后请求一直工作到最后。 Wireshark 显示该请求直到最后才起作用。
    • @Erie 如果添加线程以某种方式解决了问题,那么使用 startAynchronous 也可能会解决它。线程往往会增加复杂性并且难以重现错误,因此最好避免使用,除非有充分的理由。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多