【问题标题】:Multiple URL Received for a single NSURLConnection单个 NSURLConnection 接收到多个 URL
【发布时间】:2015-02-19 12:45:25
【问题描述】:

我正在使用 NSURLConnection 与服务器进行通信和传递/获取数据。我只发送一次请求,但服务器的访问日志显示它正在接收多个请求。我试图记录我发送到服务器的请求,但它只打印一次。向服务器发送请求的代码是:

 NSURL *url=[NSURL URLWithString:[[NSString stringWithFormat:@"%@/services/OtherProcess/Status",serverIP]stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
            NSLog(@"Sending URL -> %@",url);
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];

    if(connection)
        [connection cancel];
    connection=[NSURLConnection connectionWithRequest:theRequest delegate:self];

    responseData = [[NSMutableData alloc] init];

我什至尝试添加断点,发现它只被调用一次。任何帮助都会很有用。

【问题讨论】:

    标签: ios xcode nsurlconnection


    【解决方案1】:

    我遇到了同样的问题。我用 iFrame 调用了一个网页。这个 iFrame 也称为 NSURLConnetion 委托。

    【讨论】:

    • 你能不能再详细点。如何将 iFrame 与 NSURL 连接用于 GET 请求。
    【解决方案2】:

    为什么不使用委托来记录连接NSURLConnectionDataDelegate? 连接可以在重定向一段时间内保持活动状态,这可能导致您的服务器记录多个请求。您可以使用此方法connection:willSendRequest:redirectResponse: 来查看是否发生了重定向。

    如果需要身份验证,可能会发生重定向。此外,如果不确定,您始终可以使用此方法sendSynchronousRequest:returningResponse:error:

    使用同步请求进行测试(仅用于测试,因为它们会阻塞您的主线程)

    【讨论】:

    • 我正在使用 NSURLConnections 委托,但它也会在 finishLoading 中记录一次。也没有发生重定向,无论如何请再次检查它。是否有可能多个打开的 tcp 连接到同一地址可能会导致这样的问题?所有多条日志都会立即打印在访问日志中。
    • 每次你初始化一个连接时,它都会向你的端点发出一个 tcp 请求。
    • 连接成功后会自动关闭吗??
    • 上次我检查时,连接会打开一个套接字一小段时间(我认为是 12 秒?),因此它可以重用相同的连接。现在,每次您创建一个新连接时,只有那个应该发送请求。此外,[connection cancel] 没有太大影响,因为代表仍然处于活动状态。
    • 我应该怎么做才能防止它。我是在创建多个连接还是某种网络问题。
    【解决方案3】:

    对我来说,这是我们服务器中的套接字超时。我们的服务器正在关闭套接字,iOS 内部在它放弃之前又重试了 3 次。增加超时/更改设置对我有用。

    【讨论】:

      猜你喜欢
      • 2011-12-20
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多