NSURLProtocol и прогресс загрузки публикации

Я использую подкласс NSURLProtocol для перехвата всех HTTP-вызовов и изменения пользовательского агента, а также для добавления других HTTP-заголовков, необходимых моему серверу.

-(id)initWithRequest:(NSURLRequest *)request
      cachedResponse:(NSCachedURLResponse *)cachedResponse
              client:(id <NSURLProtocolClient>)client
{
    NSMutableURLRequest* lInnerRequest;
    //************************************************

    lInnerRequest = [request mutableCopy];
    [lInnerRequest setValue:@"MyUserAgent" forHTTPHeaderField:@"User-Agent"];

    //************************************************
    self = [super initWithRequest:lInnerRequest
                   cachedResponse:cachedResponse
                           client:client];
    //************************************************
    if (self) 
    {
        self.innerRequest = lInnerRequest;  
    }
    //***********************************00*************
    [lInnerRequest release];
    //************************************************
    return self;
}

Мой протокол затем использует NSURLConnection

- (void)startLoading
{
self.URLConnection = [NSURLConnection connectionWithRequest:self.innerRequest delegate:self];
}

Затем я реализую весь метод делегата в NSURLConnection, перенаправляя вызов эквивалентному методу NSURLProtocolClient. В целом это работает хорошо, но когда я загружаю данные на сервер, мой код, использующий NSURLConnection, не вызывается обратно:

connection: didSendBodyData: totalBytesWritten: totalBytesExpectedToWrite:

Я понимаю, почему это так, поскольку я этого не делал. Не реализовывать этот метод в NSURLProtocol, поскольку нет эквивалентного метода NSURLProtocolClient, который можно было бы использовать для отчета о ходе загрузки.

Нашел ли кто-нибудь способ обхода этой проблемы?

6
задан terrinecold 7 February 2012 в 16:17
поделиться