解决Alamofire库在iOS7下设置Head无效的问题

同样的代码在iOS8下没有问题,iOS7就取不到数据(会包Cocoa Error 3840之类的错误),跟踪发现请求Head参数设置不管用,根据文字底部的参考改了一下兼容代码:

代码
  private func getRequest(method: Method, _ URLString: URLStringConvertible, parameters: [String: AnyObject]? = nil) -> NSMutableURLRequest {
    let request = NSMutableURLRequest(URL: NSURL(string: URLString.URLString)!)
    request.HTTPMethod = method.rawValue
    if parameters != nil {
      request.HTTPBody = NSJSONSerialization.dataWithJSONObject(parameters!, options: nil, error: nil)
    }
    request.setValue(API_UA, forHTTPHeaderField: "User-Agent")
    request.setValue(HEADER_ACCEPT, forHTTPHeaderField: "Accept")
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")

    return request
  }

这里API_UA和HEADER_ACCEPT更改为自己的Head参数即可,使用代码:

var request: Request!
    if DeviceUtils.isIOS7() {
      request = mHttpManager.request(getRequest(method, URLString, parameters: parameters))
    } else {
      request = mHttpManager.request(method, URLString , parameters: parameters, encoding: ParameterEncoding.JSON)
    }
    //request.responseJSON....

 代码说明:

a)、 mHttpManager就是Manager.sharedInstance,注意别忘了设置mHttpManager.session.configuration.HTTPAdditionalHeaders,在iOS8下还是管用的

 参考:

Setting Custom HTTP Headers in Alamofire in iOS 7 not working (参考帖子,也尝试设置NSURLSessionConfiguration但是没有效果)

以上就是对Alamofire库在iOS下设置Head的资料整理,希望能帮助开发IOS软件的同学。

(0)

相关推荐

  • iOS7 毛玻璃特效代码

    原图: 效果图: 实现: 首先需要导入Accelerate.framework. 然后把两个文件加入到自己的项目中即可. UIImage+ImageEffects.h 复制代码 代码如下: #import @interfaceUIImage(ImageEffects) -(UIImage*)applyLightEffect; -(UIImage*)applyExtraLightEffect; -(UIImage*)applyDarkEffect; -(UIImage*)applyTintEffe

  • 深入学习iOS7自定义导航转场动画

    在iOS7以前,开发者如果希望定制导航控制器推入推出视图时的转场动画,一般都只能通过子类化UINavigationController或者自己编写动画代码去覆盖相应的方法,现在iOS7为开发者带来了福音,苹果公司引入了大量新API,给予了开发者很高的自由度,在处理由UIViewController管理的UIView动画时,这些API使用方便,可扩展性也很强,定制起来非常轻松: 全新的针对UIView的动画block方法 全新的UIViewControllerAnimatedTransitioni

  • 解决iOS7上UITextField限制字数输入导致崩溃问题的方法

    在一些场景中,需要限制用户的输入字数,例如在textField里进行控制(textView也类似,崩溃原因也相同),如图所示 系统会监听文本输入,需要注意的第一点是输入法处于联想输入还未确定提交的时候,对于第三方输入法例如搜狗,联想状态下的输入,是监听不到,除非点击确定输入到textField,才会触发changed事件. 但对于系统键盘,联想状态下的输入也会监听,这里如果不处理就容易发生崩溃,例如当快要达到字数限制时,继续输入,此时textField.text =联想输入文字+textFiel

  • ios7中UIViewControllerBasedStatusBarAppearance作用详解

      ios7中UIViewControllerBasedStatusBarAppearance详解 在作iOS7的适配时,很多文章都会提到UIViewControllerBasedStatusBarAppearance.便一直不是太明白其实际作用,使用时发现UIViewControllerBasedStatusBarAppearance的实际作用如下: 这个属性只影响如何设置status bar上字体的颜色是暗色(黑色)还是亮色(白色),对status bar的背景色无影响.status bar

  • android底部弹出iOS7风格对话选项框(QQ对话框)--第三方开源之IOS_Dialog_Library

    先给大家展示下效果图,喜欢的朋友可以下载源码哦. 完成这个效果的是使用了 IOS_Dialog_Library 下载地址:http://xiazai.jb51.net/201509/yuanma/IOS_Dialog_Library(jb51.net) 下载后导入到Eclipse中,然后作为Library引入到自己的工程中,直接作为第三方控件使用. 测试代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a

  • 解决Alamofire库在iOS7下设置Head无效的问题

    同样的代码在iOS8下没有问题,iOS7就取不到数据(会包Cocoa Error 3840之类的错误),跟踪发现请求Head参数设置不管用,根据文字底部的参考改了一下兼容代码: 代码 private func getRequest(method: Method, _ URLString: URLStringConvertible, parameters: [String: AnyObject]? = nil) -> NSMutableURLRequest { let request = NSMu

  • IIS7下设置https主机名绑定灰色无法修改问题解决

    在Win2008服务器设置IIS证书SSL时候发现有这样的问题,具体情况如下图 具体原因不明,解决方法是 通过编辑IIS的配置文件C:\inetpub\temp\appPools 对应的网站域名是网站启动后生成的临时文件,修改这里的配置一点用都没有.下次IIS启动就删除掉了. 真正的配置文件在这里“C:\Windows\System32\inetsrv\config\applicationHost.config”,找到以下段落 <system.applicationHost> 里面的子段落 &

  • laravel 解决多库下的DB::transaction()事务失效问题

    问题:最近使用laravel的DB::transaction()方法进行事务操作时,发现事务总是无效的.代码如下: DB::transaction(function () use ($uid, $roleId) { RoomUserRole::insert([ 'uid' => $uid, 'role_id' => $roleId, 'created_at' => LARAVEL_START, 'updated_at' => LARAVEL_START ]); RoomUserRo

  • linux mint 18虚拟机下设置1080P分辨率的方法

    前言:Linux mint 18发布了,但是在虚拟机下安装,发现没有1080p分辨率的选项,可能是4.4内核的原因?搜索了一下解决方法,自测可用,记录一下. 1.  创建一个shell脚本,内容如下: #!/bin/sh cvt 1920 1080 xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync xrandr --addmode Virtual

  • IIS 8.5下设置自定义404错误页

    IIS版本:IIS 8.5问题描述 搭建一个测试网站,总共就2个页面(index.php和404.php),默认首页为:index.php 当访问index.php和404.php的时候,IIS服务器能正常响应,说明在IIS 8.5中配置PHP环境没有出现问题. 访问index.php 访问404.php 另外,我的错误页配置结果如下: 正常情况下,当访问某个不存在的页面时(比如:127.0.0.1/aaa.php),此时,iis服务器发现aaa.php这个文件并不存在,所以,应该会请求404.

  • Android CheckBox中设置padding无效解决办法

    Android CheckBox中设置padding无效解决办法 CheckBox使用本地图片资源 CheckBox是Android中用的比较多的一个控件,不过它自带的button样式比较丑,通常都会替换成本地的资源图片.使用本地资源图片很简单,设置android:button属性为一个自定义的包含selector的drawable文件即可. 例如android:button="@drawable/radio_style".radio_style.xml定义如下.checked和unc

  • 解决tomcat在Debug模式下无法启动问题

    环境:eclipse,JDK1.6,tomcat6.0 问题:在server中正常启动tomcat是没问题的,javaweb项目也可正常访问,使用debug模式启动的话速度特别慢(好像一直处于那种启动状态见图),而且等一会就会提示超时并自动停止tomcat服务.也在网上查了一些方案,修改启动时间,修改tomcat内存都于事无补,报错如下图: 后来找了一些资料,这个问题可能是由于eclipse和tomcat的交互而产生的,在以debug模式启动tomcat时,发生了读取文件错误,eclipse自动

  • 总结升级易语言支持库保证向下兼容性

    易语言支持库升级之后,要保证向下兼容性,主要是做到以下几点: 一:保证原有的易语言源程序(.e)能正常打开(兼容点1).正常编译(兼容点2).编译结果正确(兼容点3): 二:保证原有的易语言程序(.exe)能正常运行(兼容点4).运行结果正确(兼容点5). 这里说的"原有的易语言源程序"和"原有的易语言程序"是指,替换新版支持库文件之前,使用旧版支持库编写的易语言源程序,和使用该源程序编译生成的可执行程序. 本文主要就此问题结合具体情况进行分析和总结. 一,为支持库

  • Linux Windows下设置定时执行任务的方法

    本篇主要介绍如何在Linux和Windows上分别创建定时执行任务. Linux篇 Linux下创建定时执行任务可使用crontab,系统默认自带crontab,在Ubuntu 16.04下进行演示说明. 1.crontab 基本使用 #/etc/init.d/cron status # 查看状态 #/etc/init.d/cron start # 启动crontab服务 #/etc/init.d/cron stop # 停止crontab服务 #/etc/init.d/cron reload

  • 解决laravel资源加载路径设置的问题

    原先我设置的资源路径是这样的: <link rel="stylesheet" href="css/app.css" rel="external nofollow" > 然后我在路由中调用了别的控制器,所以访问的url格式就变成了这样: http://www.laravel4.com/users 然后资源加载的路径href就变成了这样: http://www.laravel4.com/users/css/app.css 这样肯定调用不到

随机推荐