Вот где я до сих пор с NSURLSessionUploadTask
:
- Приложение iOS запускает
NSURLSessionUploadTask
с помощью POST - сервер получает запрос HTTP POST
- сервер считывает содержимое запроса, поэтому данные загружаются
- сервер отправляет HTTP-ответ на iOS, состоящий из следующего:
HTTP/1.1 200 OK Server: BaseHTTP/0.3 Python/2.7.10 Date: Fri, 30 Oct 2015 16:15:21 GMT Content-Type: text/html Content-Length: 96 <html><head><title>POST RESPONSE</title></head><body><p>The file was uploaded.</p></body></html>
- Приложение iOS получает ответ и
NSLogs
ответ черезNSURLSessionTaskDelegate -> URLSession:task:didCompleteWithError:
<NSHTTPURLResponse: 0x15d95110> { URL: http://10.157.239.129:42000/ } { status code: 200, headers { "Content-Length" = 96; "Content-Type" = "text/html"; Date = "Fri, 30 Oct 2015 16:15:21 GMT"; Server = "BaseHTTP/0.3 Python/2.7.10"; } }
- однако, когда я пытаюсь
NSLog
получить содержимое ответа, когда методNSURLSessionTaskDelegate: -> URLSession:dataTask:didReceiveData:
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { // Called when data task has received some data (not applicable for straight upload?) if (data != NULL) { NSLog(@"%s: %@", __PRETTY_FUNCTION__,[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); } else { NSLog(@"%s: but no actual data received.", __PRETTY_FUNCTION__); } // If we are not in the "active" or foreground then log some background information to the console if (UIApplication.sharedApplication.applicationState != UIApplicationStateActive) { [BackgroundTimeRemainingUtility NSLog]; } }
- называется я получаю это для вывода:
2015-10-30 12:15:22.648 NSURLSessionUploadTaskExample[215:7286] -[ViewController URLSession:dataTask:didReceiveData:]: (null)
- что странно, так это то, что ответ не должен был запускать блок операторов if, если данные равны нулю!
- У меня также есть доказательства того, что данные ответа БЫЛИ отправлены в приложение iOS через Wireshark. Вот захват пакета HTTP-ответа с сервера:
Может ли кто-нибудь сказать мне, почему iOS теряет содержимое в ответе HTTP?