0

在我的子类的startLoading方法中URLProtocol,我创建了一个URLSessionand URLSessionStreamTask。我resume的任务并添加一个BlockOperation来调用我的第一个事务方法。该方法使用URLSessionStreamTask.write. 如果我没有收到错误,BlockOperation则会使用我的第二种交易方法放置另一个错误。该方法使用URLSessionStreamTask.read并且总是超时。

错误看起来像:

Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x10945dff0 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=gopher://www.floodgap.com:80/GET%20/, NSErrorFailingURLKey=gopher://www.floodgap.com:80/GET%20/, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.}

流任务只能用于一个 I/O 调用吗?还是只是写作或只是阅读?或者是否有一些我忘记在写入和读取之间调用的模式切换功能?会不会有别的问题?

4

1 回答 1

0

尝试在写入 streamTask 之前添加读取块操作。读写是异步调用,等待超时发生。在您的示例中,您发送了一个带有写入的命令,我猜它会很快接收并回答,然后再将读取添加到任务中完成。所以你永远看不到你的回应。

于 2018-06-21T12:54:04.927 回答