iphone延迟了服务器的响应

Nik*_*a P 4 iphone response request nsurlconnection ios

一旦我向服务器发送请求(通过NSURLConnection sendSynchronousRequest方法),服务器在大约2秒钟内收到请求,它会在另外3-5秒内处理并发回响应.但是,我只能在30-35秒内收到回复.这种延迟使我们的沟通非常缓慢.

即使是异步API也会得到延迟响应.

早些时候,一切都运行正常,客户在10秒内收到回复.还有谁有相同的问题吗?可能是什么原因?

编辑 这里是Wireshark分析的截图:

链接到更好的图像

在此输入图像描述

我怎么能看到什么包说什么?..为什么它会被推迟?

EDIT2 这是代码:

 NSHTTPURLResponse *response=nil;

NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:nsURL] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:180.0];
[theRequest setHTTPMethod:@"POST"];
[theRequest setTimeoutInterval:180.0];
[theRequest setHTTPBody:[[NSString stringWithFormat:@"%@",sdata] dataUsingEncoding:NSASCIIStringEncoding]];

NSError *error= nil;

NSData *result = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error];
if (error ) {
    NSLog(@"error sending synchronous request: %@", error);
}
NSLog(@"request completed with code:%d",response.statusCode);
Run Code Online (Sandbox Code Playgroud)

occ*_*lus 8

我会避免打电话sendSynchronousRequest.如果您没有在后台线程上进行调用(您不想阻止UI线程),请使用异步版本.

你怎么知道什么时候收到iOS回复?一个NSLog?UI状态发生变化?

另见这些问题:

NSURLConnection sendSynchronousRequest - 背景到前景

NSURLConnection sendSynchronousRequest需要太多时间来响应

更新

如果你有点卡住,一种策略可能是排除使用NSURLConnection问题.

  • 策略1:尝试使用NSURL异步连接调用而不是同步
  • 策略2:尝试使用不同的HTTP库,例如AFNetworking

如果您想仔细查看HTTP连接的内容,可以使用Charles,FiddlerWireshark等工具来调试正在发送和接收的数据.要从这种分析中获得最大收益,您需要具备一些HTTP协议的知识.这可能比前面提到的策略更耗时.

另请参阅如何监控从iOS模拟器进行的网络调用等问题.

更新

您是否正在访问自己的网络服务器,或者是其他人的网络服务器?

您是否仔细查看了发送到您的网络服务器的标头(以及返回的标头)?例如,注意内容长度.内容长度错误可能导致延迟,如解释在这里.

要查看请求和返回的标头,您可以在命令行上使用Firebug或wget或curl之类的东西.

此外,仔细检查有没有在您的网址的结尾换行符,如所描述这里.