我使用STHTTPRequest来获取IOS应用程序中的JSON数据。请参阅下面的代码。 当我在Iphone 6 IOS8.0上进行测试时,有时代码会进入错误块。它总是不会发生,有时只会发生。有人可以帮忙吗?谢谢你
if(showActivity)
{
[self ShowActivityIndicatorWithTitle:@"Loading..."];
}
STHTTPRequest *request1 = [STHTTPRequest requestWithURLString:[NSString stringWithFormat:@"%@%@",kBaseUrl,api]];
[request1 setTimeoutSeconds:120.0f];
[request1 setHeaderWithName:@"Content-Type" value:@"application/x-www-form-urlencoded"];
[request1 setHTTPMethod:@"POST"];
request1.rawPOSTData = [postData dataUsingEncoding:NSUTF8StringEncoding];
request1.completionDataBlock = ^(NSDictionary *headers, NSData* data)
{
[self HideActivityIndicator];
if(handler != nil)
{
NSError* connectionError;
handler(JSONObjectFromData(data),connectionError);
}
};
request1.errorBlock=^(NSError *error)
{
NSLog(@"Error: %@", [error localizedDescription]);
if(error != nil)
{
[[[UIAlertView alloc] initWithTitle:@"Connection Error !" message:kAlertInternetConnection delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil] show];
[self HideActivityIndicator];
}
};
[request1 startAsynchronous];
答案 0 :(得分:0)
我想我找到了解决方案。基本上IOS从第一个响应中获取“Keep Alive”参数,并认为连接是持久的。当进行下一个JSON调用时,IOS正在尝试使用已过期的现有连接。我添加了标题('Connection:close');在每个PHP Web服务中。我告诉每个Web服务中的ios连接已关闭。我不确定这是不是一个好方法。我已经在设备上测试了20分钟。它的工作。我很欣赏这方面的任何想法。
答案 1 :(得分:0)
在PHP中我添加了:
ob_end_clean();
header("Connection: close");
ignore_user_abort(true); // just to be safe
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Content-Length: ' . filesize($file));
readfile($file);
它有效!