【问题标题】:How to refresh a connection with NSURLConnection如何使用 NSURLConnection 刷新连接
【发布时间】:2013-02-25 02:35:09
【问题描述】:

我正在为学校做一个项目,我想知道如果用户提交了一些东西,是否有办法真正更新与 NSURLConnection 的连接。例如,我正在根据用户名进行 twitter 搜索,并且在加载视图时设置了默认用户名。当用户在该页面上输入不同的用户名时,我需要做什么来刷新该连接?我已经设置了所有按钮处理程序,并且我使用的代码与我的 viewDidLoad 函数中的代码相同。是否有方法调用或其他东西会真正重置连接?

谢谢,

大卫

【问题讨论】:

    标签: objective-c xml-parsing nsurlconnection


    【解决方案1】:

    我附上了示例代码

    // member variable 'conn'
    // NSURLConnection *conn;
    // @property(strong, nonatomic) NSURLConnection *conn;
    -(void)viewDidLoad {
      [super viewDidLoad];
      [self sendRequest];
    }
    - (IBAction)sendButtonClicked {
      [self sendRequest];
    }
    - (void)sendRequest {
      if (self.conn) {
        [self.conn cancel];
        self.conn = nil;
      }
        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]];
        NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
        self.conn = conn;
        [conn start];
    
    } 
    // NSURLConnection Delegates
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
       // append received data
    }
    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
       // error handling
    }
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
       // using data
    }
    

    【讨论】:

    • 感谢您的建议。我在按下按钮时取消了旧连接,取消了请求和连接,然后再次启动它,但它仍然无法正常工作。
    • 我实际上弄清楚了它在代码中的哪个位置不起作用。我在 connectionDidFinishLoading 末尾设置的解析器实际上并未启动。
    • 它是第一次运行,但在按下按钮时不运行
    • 我认为NSURLRequest CachePolicy 中的NSURLRequest 有问题
    • 我尝试更改缓存策略以使其不缓存,但这仍然没有解决问题。不过我正在做更多的研究。感谢您的帮助 c:
    【解决方案2】:

    我认为您不能“重置”连接。您将不得不提出新的请求。在您的按钮单击方法中,只需使用新用户名进行新的请求调用。 它就像浏览器中的请求一样工作,当您更改 url 中的某些参数时,浏览器会向 Web 服务器发送新请求。

    看看苹果的这个例子(如果你不需要缓存部分,只需关注 URLCacheConnection.h/.m)http://developer.apple.com/library/ios/#samplecode/URLCache/Listings/Classes_URLCacheController_m.html#//apple_ref/doc/uid/DTS40008061-Classes_URLCacheController_m-DontLinkElementID_10

    【讨论】:

    • 菜菜子,感谢您的浏览。我按下按钮以消除旧的请求和连接,并建立新的请求和连接。它还会重新解析并重新加载我正在使用的表格视图,但它仍然从未真正启动新连接。 =/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多