在 Alamofire 中使用嵌套 key-value 设置 headers
Set headers with nested key-value in Alamofire
我正在尝试设置 Alamofire 4 请求的 headers,其中 headers 有一个键值是另一个 key-value 对。 swift 编译器对我的 header 变量很满意,但 Alamofire 不会接受它们。
这是我的:
let subHeader = [
"some-key": "some-value",
"another-oey": "another-value"
]
let headers : [String: Any] = [
"some-header-key": "some-header-value",
"subdata": [subHeader]
]
// Upload data
Alamofire.upload(data,
to: uploadurl,
method: .put,
headers: headers)
.validate()
.response { response in
// Handle response
}
如果你看一下 Alamofire's source,你会发现 HTTPHeaders
实际上是 [String: String]
。基本上,Alamofire
期望您 [String: String]
为 headers
。
你可以做的是用 NSJSONSerialization
将你的 subheader
转换成 String
然后传递给 Alamofire
.
let dictData = try! JSONSerialization.data(withJSONObject: subheader)
let dictString = String(data: dictData, encoding: String.Encoding.utf8)!
print(dictString)
// Now use "dictString" instead of "subheader" in your "headers" dictionary
您可以根据需要进行错误处理,为了简单起见,我使用了 !
s。
我正在尝试设置 Alamofire 4 请求的 headers,其中 headers 有一个键值是另一个 key-value 对。 swift 编译器对我的 header 变量很满意,但 Alamofire 不会接受它们。
这是我的:
let subHeader = [
"some-key": "some-value",
"another-oey": "another-value"
]
let headers : [String: Any] = [
"some-header-key": "some-header-value",
"subdata": [subHeader]
]
// Upload data
Alamofire.upload(data,
to: uploadurl,
method: .put,
headers: headers)
.validate()
.response { response in
// Handle response
}
如果你看一下 Alamofire's source,你会发现 HTTPHeaders
实际上是 [String: String]
。基本上,Alamofire
期望您 [String: String]
为 headers
。
你可以做的是用 NSJSONSerialization
将你的 subheader
转换成 String
然后传递给 Alamofire
.
let dictData = try! JSONSerialization.data(withJSONObject: subheader)
let dictString = String(data: dictData, encoding: String.Encoding.utf8)!
print(dictString)
// Now use "dictString" instead of "subheader" in your "headers" dictionary
您可以根据需要进行错误处理,为了简单起见,我使用了 !
s。