【问题标题】:How to check what URL your NSURLConnection is giving you a response from?如何检查您的 NSURLConnection 给您的响应来自哪个 URL?
【发布时间】:2011-12-16 02:27:00
【问题描述】:

在 iOS5 之前,我可以测试从我的代码中得到响应的 URL 如下所示:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{
    returnString = [[[NSMutableString alloc] initWithData:responseData encoding: NSUTF8StringEncoding] autorelease];
    NSString * currentParseString = [NSString stringWithFormat:@"%@",connection];
    NSLog(@"Currently Parsing: %@",currentParseString);
}

我的日志会打印出“Currently Parsing: http://www.myinfo.com/parser....

然后我可以使用它来测试并发送到不同的 IF 语句。我现在的问题是,在 iOS5 中,connection 不再作为 URL 打印,而是作为内存块打印 <NSURLConnection: 0x6a6b6c0> 我怎样才能让它再次打印为 URL,所以我不必重写我的 IF声明?

【问题讨论】:

    标签: iphone ios xcode ios4


    【解决方案1】:

    我做了这样的事情:

    - (void)connectionDidFinishLoading:(NSURLConnection *)connection 
    {
       NSLog(@"%@",[connection currentRequest]);
    }
    

    【讨论】:

    • 正是我想要的!谢谢!
    • 有趣。在文档中找不到 currentRequest。确保 Apple 可以接受。
    • 好的,在NSURLConnection 头文件中找到了currentRequestoriginalRequest。看起来他们只是iOS 5。所以,如果你的应用没问题,那就去吧。
    【解决方案2】:

    当您将%@ 放入NSString 格式时,它将被[object description] 替换。苹果一定改变了[connection description] 返回的内容。在任何情况下都很难依赖它,因为它不能保证采用任何特定格式。

    您可以通过多种方式更改您的实现。最快的方法可能是创建一个非常简单的NSURLConnection 子类,如下所示:

    // MyNSURLConnection.h
    // code written assuming ARC
    @interface MyNSURLConnection : NSURLConnection
    @property (nonatomic, strong) NSURL *requestURL;
    @end
    


    // MyNSURLConnection.m
    // example override, you can override all the init/connection methods
    - (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate startImmediately:(BOOL)startImmediately {
        self = [super initWithRequest:request delegate:delegate startImmediately:startImmediately;
        if (self) {
            self.requestURL = request.URL;
        }
        return self;
    }
    


    // in your MyNSURLConnectionDelegate controller
    - (void)connectionDidFinishLoading:(MyNSURLConnection *)connection {
        returnString = [[[NSMutableString alloc] initWithData:responseData encoding: NSUTF8StringEncoding] autorelease];
        NSString * currentParseString = [NSString stringWithFormat:@"%@",connection.requestURL];
        NSLog(@"Currently Parsing: %@",currentParseString);
        // rest of your code
    }
    

    【讨论】:

    • +1 以获得很好的答案 XJones。我和毛利克一起去了,因为他的路线更符合我的要求。尽管我会在以后的项目中记住这个答案。再次感谢!
    • 不用担心。满足您要求的最简单的解决方案就是要走的路。
    猜你喜欢
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2017-12-27
    • 1970-01-01
    • 2015-03-04
    • 2020-01-31
    相关资源
    最近更新 更多