- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我遇到了一个问题,我的 UIWebView
中的视频资源没有加载。这只是实际设备上的一个问题 - 一切都在模拟器上完美运行。
注意:我已经检查过了,这里的问题与多次加载相同的内容有关。 NSURLProtocol isn't asked to load after YES response to canInitWithRequest
实际页面加载正常 - 在我的自定义 NSURLProtocol
中,它从 canInitWithRequest
返回 YES
(多次)然后 startLoading
在大约第 4 次或第 5 次之后被调用。然后它以类似的方式加载我的 css 文件。然后我看到对我的视频对象的请求从 canInitWithRequest
返回了 YES
,但它没有任何反应。 startLoading
永远不会为我的视频资源请求调用。这是我加载页面时来 self 的设备的简化日志:
canInitWithRequest: https://WebpageURL
canInitWithRequest: https://WebpageURL
canInitWithRequest: https://WebpageURL
canInitWithRequest: https://WebpageURL
canInitWithRequest: https://WebpageURL
START LOADING: https://WebpageURL
canInitWithRequest: https://WebpageURL
canInitWithRequest: https://WebpageURL
canInitWithRequest: https://WebpageURL
canInitWithRequest: https://cssResource
START LOADING: https://cssResource
canInitWithRequest: https://MyVideoResource
当我从在完全相同的设备类型上运行相同 iOS 版本的模拟器加载完全相同的页面时,日志显示资源实际上由于某种原因从此处开始加载:
canInitWithRequest: https://WebpageURL
canInitWithRequest: https://WebpageURL
canInitWithRequest: https://WebpageURL
START LOADING: https://WebpageURL
canInitWithRequest: https://WebpageURL
canInitWithRequest: https://cssResource
START LOADING: https://cssResource
canInitWithRequest: https://MyVideoResource
canInitWithRequest: https://MyVideoResource
START LOADING: https://MyVideoResource -- WHY NOT ON DEVICE?
该页面留下了一个永远不会播放的视频 - 只有一个白框在它应该出现的地方和上面的“播放视频”按钮。该页面看起来好像在不断地加载某些东西(状态栏中的事件指示器在旋转)但什么也没有发生,并且 Xcode 的调试导航器中的网络事件是扁平的。
长话短说
有谁知道为什么我的 iPhone 从未尝试加载此资源?显然模拟器知道它需要加载。
编辑:这是我的 NSURLProtocol 中经过轻微编辑的相关代码
@implementation CHHTTPURLProtocol
{
NSURLConnection *connection;
NSHTTPURLResponse *httpResponse;
NSData *responseData;
}
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
{
if (/* key exists on request */)
return NO;
else if (/* not http or https */)
return NO;
NSLog(@"canInitWithRequest: %@", request.URL.absoluteString);
return YES;
}
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request
{
return request;
}
- (void)startLoading
{
NSMutableURLRequest *request = [self.request mutableCopy];
NSLog(@"START LOADING: %@", request.URL.absoluteString);
if (authenticate) authenticate(request);
/* add key to request */
connection = [NSURLConnection connectionWithRequest:request delegate:self];
}
- (void)stopLoading
{
[connection cancel];
connection = nil;
}
/* Other methods like connection:didReceiveData: and connectionDidFinishLoding: */
+ (void)authenticateWithBlock:(AuthenticationBlock)block
{
authenticate = block;
}
static AuthenticationBlock authenticate;
最佳答案
我最好的猜测是 UIWebView
中使用的视频播放器没有使用通过管道传输的基础服务(NSURLSession/NSURLRequest
等)加载它的内容 NSUR 协议(protocol)
。视频播放器可能正在使用较低级别的 CFNetwork
api 发出请求。
实现可能因模拟器而异。
我知道你的协议(protocol)是通过 canInitWithRequest
调用进行轮询的,但这并不一定意味着播放器将使用 NSURLSession/NSURLRequest
实际加载资源>。
尝试通过自定义协议(protocol)将视频加载到 MPMoviePlayerViewController 中的行为与您所看到的类似:How to play movie with a URL using a custom NSURLProtocol?
关于ios - NSURLProtocol - canInitWithRequest 为页面资源返回 YES 后未调用 startLoading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33089318/
这个问题在这里已经有了答案: NSNumber Literals (5 个答案) 关闭 6 年前。 我正在发出一个 HTTP 请求,我必须在其中发送一个 bool 值。我试过他们两个。 两者的工作方
我使用 FireBug 测试了这两种情况,结果看起来非常相似: >>> var x = {"active": "yes"} >>> x.active "yes" >>> var x = {active
在 Objective-c 中,@YES/@NO 和 YES/NO 有什么区别?每种类型使用什么类型? 最佳答案 @YES 是 [NSNumber numberWithBool:YES] 的缩写形式
我正在编写一个脚本来创建虚拟机,显然我想支持标准的确认/whatif 语义。但是,如果我要创建多台机器,最好能区分"is"和“全部是”,这样我就不必重新确认每台机器。 $pscmdlet.Should
这个问题在这里已经有了答案: In JavaScript, why is "0" equal to false, but when tested by 'if' it is not false by
我需要编写一个正则表达式来验证字符串。如果正则表达式包含以下任何内容,则应传递字符串:y、Y、yes、YES , 1。这些字母可以是任何大小写。我是正则表达式和 JavaScript 的新手。 最佳答
我是网络开发的新手,如果能得到任何帮助,我将不胜感激。我有一个 HTML/CSS slider ,当 slider 处于"is"位置(如名字和主题)时,我想显示更多的文本框字段。如果可能的话,我真的希
bash: $: yes a [some output] then press Ctrl+Z $: yes b [some output] then press Ctrl+Z 然后,执行两
我感兴趣的是能够在 Yes/No 提示符下自动让我的 cmd 输入 Yes: __
以上说明了一切-我将 UITextField 设置为安全,但希望为用户提供使其不安全的选项(因此,如果他们在私有(private)区域中,他们可以确定输入的内容)。但是,假设他们误按了切换开关,并想将
当 ssh hostname 提示 The authenticity of host 'foobar' can't be established. ECDSA key fingerprint is .
如何在自定义 MKAnnotationView 上正确设置半径并允许标注?这会引发异常: 来 self 的自定义 MKAnnotationView 类: - (id)initWithFrame:(CG
如果我有 1200 行,并且我希望我的 120 行说"is"而其余的说“否”,我应该如何将其应用于 Excel 文件?我知道使用: =CHOOSE(RANDBETWEEN(1,2),"Yes","No
我想进行一个查询,返回如下所示的表结果: 列标题是我的一个表格中的字段,下面的数字是该字段的是/否条目数。 我遇到的问题是在行的开头显示是/否。我希望它以这种方式组织,以便更好地根据数据创建图表。 现
这个问题在这里已经有了答案: Literal @YES not working in iOS 5 / Xcode 4.4 (2 个答案) 关闭 7 年前。 使用 XCode 4.4 的 Conver
这段代码: $query = array( "var" => "no", "not_var" => "yes", "var2" => "maybe" ); print http
在我的 Dynamics CRM 机会表单中,我添加了销售配额分配网格。如果在整个网格中输入了四个以上"is",我希望显示一条警告消息(或类似的内容)。例如,假设记录“A”t 有 4 个标记为"is"
This question already has answers here: How do I perform an IF…THEN in an SQL SELECT? (31个答案) 已关闭6年。
考虑以下文档: foo: bar: Yes 根据the spec,这应该解释为Boolean,而不是String。 但是,it seems对此文档产生了相同的解释: foo: bar: 'Ye
在网页的第一页上,它要求用户从下拉列表中选择他们想要的产品类型,并且为每个产品指定一个值 0,1,2...然后,一旦他们继续,他们就会被发送到不同的网页,并根据他们选择的产品在那里我希望单选按钮自动选
我是一名优秀的程序员,十分优秀!