首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AJAX时NSURLProtocol超时

使用AJAX时NSURLProtocol超时
EN

Stack Overflow用户
提问于 2015-03-12 21:14:09
回答 1查看 616关注 0票数 2

我使用NSURLProtocol为所有从UIWebview传出的请求添加自定义头。在这个WebView中,在执行某些操作时,会触发AJAX调用来显示message.This操作,以显示消息使用AJAX,并且当我使用NSURLProtocol时总是超时,method.It在没有NSURLProtocol的情况下工作得很好。

让我知道如果更多的信息是needed.Here是我的代码。

代码语言:javascript
复制
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
{
    if ([NSURLProtocol propertyForKey:kUserAgentKey inRequest:request] != nil)
        return NO;

    return YES;
}

+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request
{
    return request;
}

- (void)startLoading
{
    NSMutableURLRequest *newRequest = [self.request mutableCopy];


     NSString *  customAgent = @"CustomeHeaderValue";
    [newRequest setValue:customAgent forHTTPHeaderField:kUserAgentKey];

    [NSURLProtocol setProperty:@YES forKey:kUserAgentKey inRequest:newRequest];
    self.connection = [NSURLConnection connectionWithRequest:newRequest delegate:self];


}
- (void)stopLoading
{
    [self.connection cancel];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [self.client URLProtocol:self didLoadData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    [self.client URLProtocol:self didFailWithError:error];
    self.connection = nil;
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{`enter code here`

    [self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageAllowed];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    [self.client URLProtocolDidFinishLoading:self];
    self.connection = nil;
}

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response {
    if (response) {
           [[self client] URLProtocol:self wasRedirectedToRequest:request redirectResponse:response];
    }

    return request;
}
EN

回答 1

Stack Overflow用户

发布于 2015-12-24 11:52:00

尝试实现此方法

代码语言:javascript
复制
-(NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response{
[self.client URLProtocol:self wasRedirectedToRequest:request redirectResponse:response];
return request;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29010794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档