在startLoading
子类的URLProtocol
方法中,我创建了URLSession
和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.}
stream-task只能用于一个I / O调用吗?或者只是写作或只是阅读?或者是否有一些模式切换功能我忘记在写和读之间调用?还有其他问题吗?
答案 0 :(得分:0)
尝试在写入streamTask之前添加读取块操作。读取和写入是异步调用,等待超时发生。 在您的示例中,您发送了一条带有write的命令,我想它会很快收到并回答,然后再将read添加到任务中。因此,您永远看不到您的回应。