当前位置: 首页 > 面试题库 >

如何将Alamofire与自定义标头一起使用

乔丁雨
2023-03-14
问题内容

我只是开始看一下Mattt出色的新Alamofire快速联网库,并且不确定如何将其与自定义标头一起使用。

我正在尝试从AFNetworking转换为Alamofire的代码是这样的:

let request = NSMutableURLRequest(URL: url)
request.setValue(authorizationToken, forHTTPHeaderField:"Authorization")

问题答案:

根据官方文档,不建议修改会话配置:

不建议将其用于Authorization或Content-
Type标头。而是分别使用URLRequestConvertible和ParameterEncoding。

因此,URLRequestConvertible用于授权的示例用法是:

enum Router: URLRequestConvertible {
    static let baseUrlString = "some url string"

    case Get(query: String)

    var URLRequest: NSMutableURLRequest {
        let (path: String, parameters: [String: AnyObject]?) = {
            switch self {
            case .Get(let query):
                return ("/get", ["q": query])
            }
        }()

        let URL = NSURL(string: Router.baseUrlString)!
        let URLRequest = NSMutableURLRequest(URL: URL.URLByAppendingPathComponent(path))
        // set header fields
        URLRequest.setValue("a", forHTTPHeaderField: "Authorization")

        let encoding = Alamofire.ParameterEncoding.URL        
        return encoding.encode(URLRequest, parameters: parameters).0
    }
}

当您要提出请求时:

Manager.sharedInstance.request(Router.Get(query: "test"))

有关URLRequestConvertible的更多信息:https
:
//github.com/Alamofire/Alamofire#urlrequestconvertible

旧答案

从Alamofire
v1.0开始,Pers答案不再有效。在新版本中,应将附加标头添加到的HTTPAdditionalHeaders属性中NSURLSessionConfiguration

Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders = ["Authorization": authorizationToken]

更多信息在这里:https :
//github.com/Alamofire/Alamofire/issues/111



 类似资料:
  • 问题内容: 我使用自定义标头实现了POST请求,因为我们使用OAuth2,并且必须在标头内的每个请求中发送访问令牌。在这种情况下,我必须使用自定义标头。 HTTP标头字段的访问令牌值对我不起作用。服务器生成错误,因为带有访问令牌的OAuth标头信息不可用。 但是我的代码有什么错误呢? 这是我当前的代码: 问题答案: 这是我如何与自定义标头一起使用的示例: 现在,无论何时发出请求,它都会使用指定的标

  • 问题内容: 我知道Android 很棒。它使我们能够播放本地文件以及媒体流。而且非常容易使用(例如): 通过调用具有不同参数集的重载,可以设置不同类型的DataSource 。这个函数有一个有趣的原型: 看起来可以用自己的实现完全覆盖。它确实有效: 并在主要代码中: 是的,这很好。但是,如果我尝试音频/ aacp广播流(例如:“ http://111.223.51.8:8005”-它是“ COOL

  • 我正在将我的Spring应用程序从Spring-boot 1.5.9迁移到Spring-boot 2.0.0。使用这个新的Spring包,我在Redis中缓存数据时遇到了一些问题。 在我的配置中,我有3个具有不同TTL(长、中、短)的CacheManager: 我还有一个自定义RestTemplate: 在上一个Spring版本中,缓存的每个数据都使用这个RestTemplate,并使用Gener

  • 问题内容: 我还没有找到一种方法来做到这一点。可能吗? 问题答案: 好吧,我无法弄清楚如何使用可用的类,因此我自己扩展了它,现在它对我有用。这是我所做的:

  • 问题内容: 我正在尝试使用两个SingleColumnValueFilter对象从HBase表中过滤行,以带回属于该列的长值范围内的所有记录。根据SingleColumnValueFilter的文档,除非您将其传递给自己的比较器,否则它将对列值进行字典比较。该API显示了SingleColumnValueFilter,其中采用WritableByteArrayComparable作为实现此目的的方

  • 如何将自定义摄取管道与Filebeat模块一起使用?在我的例子中,我使用的是<code>apache<code>模块。 根据多个来源,这应该可以通过<code>output.elasticsearch进行配置。管道/。资料来源如下: https://www.elastic.co/guide/en/beats/filebeat/current/elasticsearch-output.html#pi