1

У меня есть NSURLConnection, который соединяется с PHP API, который я создал. Этот PHP API отвечает данными. Поскольку это динамическое приложение, я делаю это, чтобы сказать длину содержимого:NSURLResponse expectedContentLength -1

ob_start('scAPIHandler');  

function scAPIHandler($buffer){ 

    header('Content-Length: '.strlen($buffer)); 

    return $buffer; 

} 

В начале файла API, который потом выводит все, что необходимо. Тем не менее, когда функция пожаров

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 

, значение response.expectedContentLength равно -1. Когда я пытаюсь подключиться не к моему API PHP, но некоторые изображения в Интернете, отображается правильная ожидаемая длина содержимого. Можно ли каким-либо образом заставить PHP API сообщать NSURLResponse ожидаемую длину содержимого? Заголовок заголовка содержимого не работает.

Заранее благодарен!

ответ

1

Хорошо, я понял это. Я использовал

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ 

    NSDictionary *responseHeaders = ((NSHTTPURLResponse *)response).allHeaderFields; 

    NSLog(@"headers: %@", responseHeaders.description); 

} 

этот метод, чтобы выяснить, заголовки, которые получал мое приложение IOS, и я сравнил их с заголовками, что сворачивание напечатанных при подключении к тому же адресу. Оказывается, между заголовками, которые скручивали показания и что Objective-C, было несоответствие. Следует признать, что это пугает меня много, и я понятия не имею, почему это случилось, но я нашел решение:

ob_start('scAPIHandler');  

function scAPIHandler($buffer){ 

    header('Custom-Content-Length: '.strlen($buffer)); 

    return $buffer; 

} 

Обычай-Content-Length действительно появлялся в Objective-C, и я просто взял мой пользовательский заголовок

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ 

    self.expectedContentLength = response.expectedContentLength; 
    self.receivedData.length = 0; 

    NSDictionary *responseHeaders = ((NSHTTPURLResponse *)response).allHeaderFields; 

    if(self.expectedContentLength < 0){ 

     // take my own header 

     NSString *actualContentLength = responseHeaders[@"Custom-Content-Length"]; 

     if(actualContentLength && actualContentLength.length > 0){ 

      self.expectedContentLength = actualContentLength.longLongValue; 

     } 

    } 

} 

и переписан предполагаемая длина содержимого.

Смежные вопросы