这是我到目前为止的地方NSURLSessionUploadTask
:
- iOS 应用程序
NSURLSessionUploadTask
使用 POST启动 - 服务器收到 HTTP POST 请求
- 服务器读取请求的内容,以便上传数据
- iOS 应用程序调用
URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:
重复以totalBytesSent
等于等于的最终调用结束totalBytesExpectedToSend
- 服务器向 iOS 发送 HTTP 响应,其中包含以下内容:
HTTP/1.1 200 正常 服务器:BaseHTTP/0.3 Python/2.7.10 日期:格林威治标准时间 2015 年 10 月 30 日星期五 16:15:21 内容类型:文本/html <html><head><title>POST RESPONSE</title></head><body><p>文件已上传。</p></body></html>
- iOS 应用程序收到此响应(通过 Wireshark 确认)
- iOS应用程序不会像它应该调用以下方法来完成上传任务:
NSURLSessionTaskDelegate: -> URLSession:dataTask:didReceiveData:
NSURLSessionTaskDelegate -> URLSession:task:didCompleteWithError:
- 相反,在挂起约 200 秒后,iOS 应用程序会重复数据上传任务
此数据上传、HTTP 200 响应、~200 秒挂起过程似乎无限重复。为什么 iOS 应用程序收到 HTTP 响应后不调用NSURLSessionTaskDelegate: -> URLSession:dataTask:didReceiveData:
?NSURLSessionTaskDelegate -> URLSession:task:didCompleteWithError: