调用 Web 服务时出错,无法完成操作

Posted

技术标签:

【中文标题】调用 Web 服务时出错,无法完成操作【英文标题】:Error while calling web service, operation can not be completed 【发布时间】:2013-02-02 15:46:09 【问题描述】:

我正在调用网络服务,我得到 0 个字节作为响应,并得到如下错误:

Error Domain=kCFErrorDomainCFNetwork Code=303 “操作无法完成。(kCFErrorDomainCFNetwork 错误 303。)” UserInfo=0xa9b8ef0 NSErrorFailingURLKey=http://quantuminfoways.com/crossfit_wodgenius/webservice/sync.php, NSErrorFailingURLStringKey=http://quantuminfoways.com/crossfit_wodgenius/webservice/sync.php

我将数据作为 sample link.

在数据中我传递了这个:


    createwod =     
        deletedcreatewod =         (
        );
        newcreatewod =         (
        );
    ;
    favorite =     
        deletedfavorite =         (
        );
        newfavorite =         (
        );
    ;
    gym =     
        deletedgym =         (
        );
        newgym =         (
        );
    ;
    workoutlog =     
        deletedworkoutlog =         (
        );
        deletedworkoutlogtime =         (
        );
        newworkoutlog =         (
        );
    ;

谁能帮我解决一下?

谢谢

【问题讨论】:

what is kCFErrorDomainCFNetwork Code=303的可能重复 【参考方案1】:

当您将 POST 方法调用为 GET 时出现错误“kcferrordomaincfnetwork error 303”的原因之一。

【讨论】:

【参考方案2】:

303 错误是重定向错误。

您可能想查看使用 NSURLConnection 自动处理重定向: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Articles/RequestChanges.html

如果您想手动处理,重定向 URL 位于响应的“位置”标头中。以下是在连接中获取它的方法:didReceiveResponse 委托方法。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
    // ... if the response status is 303 ...
    if ([response respondsToSelector:@selector(allHeaderFields)]) 
        NSString* location = [[httpResponse allHeaderFields] valueForKey:@"Location"];
            // do whatever with the redirect url 
    

您也可以尝试对包含数据的 url 进行 urlEncoding。试试如果你只调用以下 URL 会发生什么:http://quantuminfoways.com/crossfit_wodgenius/webservice/sync.php?udid=123&new=yes&uid=45&data=%20%7B%20createwod%20=%20%7B%20deletedcreatewod%20=%20(%20);%20newcreatewod%20=%20(%20);%20%7D;%20favorite%20=%20%7B%20deletedfavorite%20=%20(%20);%20newfavorite%20=%20(%20);%20%7D;%20gym%20=%20%7B%20deletedgym%20=%20(%20);%20newgym%20=%20(%20);%20%7D;%20workoutlog%20=%20%7B%20deletedworkoutlog%20=%20(%20);%20deletedworkoutlogtime%20=%20(%20);%20newworkoutlog%20=%20(%20);%20%7D;%20%7D

【讨论】:

OP 收到kCFErrorDomainCFNetwork 类型的错误,这与 HTT 状态代码不同。错误 303 是 kCFErrorHTTPParseFailure,这意味着客户端无法正确处理结果。 我在浏览器中得到了正确的结果。但不是在移动设备中。

以上是关于调用 Web 服务时出错,无法完成操作的主要内容,如果未能解决你的问题,请参考以下文章

在搭项目时出错导致无法运行,可能是spring中要配置数据源的错但不能确定有高手解决下不胜感激报错如下:

使用 Web 服务时出错:现有连接被强行关闭

在报告服务 2008 上调用 Render 方法时出错

验证邮件的安全性时出错

使用自托管 Azure Service Fabric 调用 Web API 时出错

使用 JQuery 访问 ASP.net Web 服务时出错 - JSONP