Iphone NSURLConnection disable";“HTTP重定向太多”;
我目前正在做许多服务器端计算,这些计算需要一段时间来处理 同时,我将用户重定向到同一页面,直到它有响应为止 这将导致“太多HTTP重定向”错误。有没有办法禁用它,或者提高它的阈值 这发生在模拟器和电话上 以下是相关代码:Iphone NSURLConnection disable";“HTTP重定向太多”;,iphone,redirect,nsurlconnection,Iphone,Redirect,Nsurlconnection,我目前正在做许多服务器端计算,这些计算需要一段时间来处理 同时,我将用户重定向到同一页面,直到它有响应为止 这将导致“太多HTTP重定向”错误。有没有办法禁用它,或者提高它的阈值 这发生在模拟器和电话上 以下是相关代码: //Define request NSURLRequest *request = [requestGenerator theRequest]; // Execute URL and read response NSError *error = nil; NSHTTP
//Define request
NSURLRequest *request = [requestGenerator theRequest];
// Execute URL and read response
NSError *error = nil;
NSHTTPURLResponse *httpResponse;
NSData *resp = [NSURLConnection sendSynchronousRequest:request returningResponse:&httpResponse error:&error];
//If we get a good response
if(resp != nil && httpResponse != NULL && [httpResponse statusCode] >= 200 && [httpResponse statusCode] < 300)
{
...
}
if (error) {
[self showErrorMessage:error];
}
//定义请求
NSURLRequest*request=[RequestGeneratorTheRequest];
//执行URL并读取响应
n错误*错误=nil;
NSHTTPURLResponse*httpResponse;
NSData*resp=[NSURLConnection sendSynchronousRequest:request returningResponse:&httpResponse错误:&error];
//如果我们得到好的回应
如果(resp!=nil&&httpResponse!=NULL&&httpResponse statusCode]>=200&&httpResponse statusCode]<300)
{
...
}
如果(错误){
[自我信息:错误];
}
重定向到同一个URL是非常浪费的。至少,为“作业”分配一个ID并将其返回给呼叫应用程序。然后,它可以轮询服务器,传递ID,以查看作业何时完成。你不应该太频繁地投票,也许每隔几秒钟就投票一次
您也可以只使用一个请求-响应。您的服务器在获得数据之前不会响应。在iPhone上,默认超时设置为60秒。您的服务器可能能够启动响应(写出一点数据),以便建立连接;但在处理完成之前不要完成并关闭连接
最后,如果你做一个简单的请求。。。长时间延迟。。。反应;并预期它将花费60秒-考虑通过I/P>延长请求的超时时间。
注意:在您的示例中,您使用的是同步请求。如果您在线程之外执行此操作,您的应用程序可能会被阻止。如果它阻塞时间超过20秒,它将被看门狗服务杀死。对委托使用异步方法来捕获响应非常容易,所以请尝试一下
最后,如果您使用异步方法;您可以捕获3xx重定向并自行处理;但是你知道,你的重定向技术看起来很邪恶,所以不要这样做。如果页面不是供最终用户显示的,那么为什么要继续重定向?难道你不能从服务器上发送一个200,然后在它准备好时呈现其余的响应吗?此外,你建议的方法会产生不必要的网络流量,这在iPhone上是最好避免的,出于显而易见的原因。ps:如果您返回一个“作业id”,那么您的服务器将需要保留作业结果,直到客户端回调以获取它为止。您还需要在服务器上执行一个清理任务,该任务将删除旧的和被遗忘的作业。