利用UIWebView获取userAgent需要注意的地方
网络通信有时候需要传递参数userAgent,iOS中获取userAgent很简单.
UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString *userAgentString = [webView stringByEvaluatingJavaScriptFromString:
@"navigator.userAgent"];
打印信息如下
userAgentString --> Mozilla/5.0 (iPod touch; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D167
有时候,你想在后台线程中获取userAgent,直接就有如下信息提示:
bool _WebTryThreadLock(bool), 0x14e6b590: Tried to obtain the web lock from a thread other than the main thread or the web thread. This may be a result of calling to UIKit from a secondary thread. Crashing now...
找了一下资料,原来是这么回事:
Webviews and the Webkit JavaScript engine are both single-threaded and cannot be used on a background thread.
Webview以及Webkit Java脚本引擎,这两个都是单线程的,不能够在子线程中使用.
所以,不要试图在子线程中获取userAgent,虽然获取userAgent耗时间,但第一次获取后可以把userAgent值存储起来,下回直接读取就行了.
附录:
利用UIWebView获取userAgent需要注意的地方的更多相关文章
- 第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头
一. 引言 在<第14.3节 使用google浏览器获取网站访问的http信息>和<第14.4节 使用IE浏览器获取网站访问的http信息>中介绍了使用Google浏览器和IE ...
- (转)利用libcurl获取新浪股票接口, ubuntu和openwrt实验成功(三)
1. 利用 CURLOPT_WRITEFUNCTION 设置回调函数, 利用 CURLOPT_WRITEDATA 获取数据指针 官网文档如下 CALLBACK OPTIONS CURLOPT_WRI ...
- Atitit利用反射获取子类 集合 以及继承树
Atitit利用反射获取子类 集合 以及继承树 想从父类往下找子类的确是不可能的,要知道只要类不是final的话谁都有继承它的自由不需要事前通知父类. Eclipse实现不是重父类开始找而是重子类往回 ...
- Windows Phone中获取UserAgent
进入WP8时代后,通过DeviceExtendedProperties获取到的DeviceName不再是手机型号了,这对于需要获得手机型号做一些事情的应用(如新浪微博的小尾巴)来说,影响是比较大的. ...
- 十九、利用OGNL获取ValueStack中:根栈和contextMap中的数据
利用OGNL获取ValueStack中:根栈和contextMap中的数据 原则:OGNL表达式如果以#开头,访问的contextMap中的数据 如果不以#开头,是访问的根栈中的对象的属性(List集 ...
- c#反射机制学习和利用反射获取类型信息
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的 ...
- Cocos2d-x利用CCHttpRequest获取网络图片并显示
利用CCHttpRequest获取网上http地址的图片并缓存到本地生成CCSprite用于显示 //图片结构class imgstruct : public CCObject { public: i ...
- 利用ParameterizedType获取泛型参数类型
//利用ParameterizedType获取java泛型的参数类型 public class Demo { public static void main(String[] args) { ...
- 利用GPS获取行车速度和距离
这几天项目中需要GPS计算汽车的速度和行驶距离,这里简单记录一下使用过程 1 和平常使用地图一样,在Info.plist中添加位置请求 2 在viewdidLoad中初始化locationManage ...
随机推荐
- centos安装lspci工具
https://blog.csdn.net/wudiyi815/article/details/38325199
- 2款适合HTML做音频和视频的插件
Flowplayer-视频播放器 Flowplayer 是一个开源(GPL 3的)WEB视频播放器.您可以将该播放器嵌入您的网页中,如果您是开发人员,您还可以自由定制和配置播放器相关参数以达到您要的播 ...
- PHP递归遍历数组 不破坏数据结构 替换字符
代码如下: <?php $arr = array('0'=>array("<小刚>","<小晓>","<小飞 ...
- 【洛谷】P4643 【模板】动态dp
题解 在冬令营上听到冬眠的东西,现在都是板子了猫锟真的是好毒瘤啊(雾) (立个flag,我去thusc之前要把WC2018T1乱搞过去= =) 好的,我们可以参考猫锟的动态动态dp的课件,然后你发现你 ...
- bzoj 1237 [SCOI2008]配对 贪心+dp
思路:dp[ i ] 表示 排序后前 i 个元素匹配的最小值, 我们可以发现每个点和它匹配的点的距离不会超过2,这样就能转移啦. #include<bits/stdc++.h> #defi ...
- python的简介(一)
1. Python的种类 Cpython Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚 ...
- Bootstrap进阶六:动态样式语言LESS简介
LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, Firefox),也可以借助Node.js或者R ...
- BZOJ.5311.贞鱼(DP 决策单调)
题目链接 很容易写出\(O(n^2k)\)的DP方程.然后显然决策点是单调的,于是维护决策点就可以了.. 这个过程看代码或者别的博客吧我不写了..(其实是忘了) 这样复杂度\(O(nk\log n)\ ...
- 原生JS实现一个简单的前端路由(原理)
说一下前端路由实现的简要原理,以 hash 形式(也可以使用 History API 来处理)为例, 当 url 的 hash 发生变化时,触发 hashchange 注册的回调,回调中去进行不同的操 ...
- linux octave 4.0安装
octave,linux下的安装.官网:Octive,请参考以下资料: 安装教程:Ubuntu通过源码编译安装Octave 4.0