错误:__ tcp_connection_write_eof_block_invoke写入关闭回调收到错误 - iOS 10

时间:2016-09-30 12:36:12

标签: ios xmlhttprequest nsurlconnection ios10 xcode8

向ONVIF Camera发送XML基本API请求时。它在ios 9设备上运行良好,但在iOS 10上提供了“500内部错误”。

XCode 8控制台打印以下错误消息:

2016-09-30 12:39:51.295419 VCPlugin[278:10183] [] nw_socket_get_input_frames recvmsg(fd 12, 1024 bytes): [54] Connection reset by peer
2016-09-30 12:39:51.301221 VCPlugin[278:10228] [] nw_socket_write_close shutdown(12, SHUT_WR): [57] Socket is not connected
2016-09-30 12:39:51.301307 VCPlugin[278:10228] [] nw_endpoint_flow_service_writes [3 10.107.2.153:80 ready socket-flow (satisfied)] Write request has 0 frame count, 0 byte count
2016-09-30 12:39:51.301903 VCPlugin[278:10185] [] __tcp_connection_write_eof_block_invoke Write close callback received error: [89] Operation canceled
2016-09-30 12:41:13.492053 VCPlugin[278:10287] [] __tcp_connection_write_eof_block_invoke Write close callback received error: [57] Socket is not connected
2016-09-30 12:42:51.278617 VCPlugin[278:10228] [] __tcp_connection_write_eof_block_invoke Write close callback received error: [22] Invalid argument

如果用户重试并重试三到四次,那么在从服务器获得有效的xml响应之后。

我不知道这个iOS 10的行为。

这是我为调用XML API post请求编写的代码:

NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:url];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:body];
[urlRequest setValue: @"application/soap+xml" forHTTPHeaderField:@"Content-Type"];
[urlRequest setValue: @"application/soap+xml" forHTTPHeaderField:@"Accept"];

NSURLSessionDataTask * dataTask = [defaultSession dataTaskWithRequest:urlRequest completionHandler:^(NSData *data1, NSURLResponse *response, NSError *error) {
        NSLog(@"Response:%@ %@\n", response, error);
        if(error == nil)
        {
             NSString * text = [[NSString alloc] initWithData: data1 encoding: NSUTF8StringEncoding];
              NSLog(@"Data = %@",text);
        }
}];

[dataTask resume];

另请阅读Apple Form,但未获得解决方案。

1 个答案:

答案 0 :(得分:7)

试试这段代码:

我有同样的问题,但你可以做些什么,

1)进入产品 - >方案 - >编辑方案
2)运行左侧的Section,选择Argument Tab,然后在Environment Variable中输入。

  

OS_ACTIVITY_MODE to value:disable。

有关详细信息,请参阅以下屏幕截图。

enter image description here

这将消除控制台中的消息。

但是我仍然在努力实现PLBuildVersion两个...... [/ p>

我希望这可以帮到你!