IOS STHTTPRequest进入错误块

时间:2015-06-24 14:30:09

标签: sthttprequest

我使用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];

2 个答案:

答案 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);

它有效!