如何将HTTP标头快速添加到url?

时间:2018-12-09 21:49:35

标签: ios swift

这是我的标题

Screen Shot

我已经将这些参数添加到url中,如何在swift中将值“ bearer”和api_key添加到url

 var urlComponents = URLComponents(string: "https://api.yelp.com/v3/businesses/search")!

    urlComponents.queryItems = [
        URLQueryItem(name: "query", value: "landmarks"),
        URLQueryItem(name: "ll", value: "\(latitude), \(longitude)"),
    ]

3 个答案:

答案 0 :(得分:0)

您可以尝试

let url = URL(string: urlStr) 
var request = URLRequest(url: url!) 
request.httpMethod = "POST" 
request.setValue("application/json", forHTTPHeaderField:"Content-Type")
request.setValue("Bearer \(yourToken)", forHTTPHeaderField:"Authorization") 
request.timeoutInterval = 60.0 
URLSession.shared.dataTask(with: request) {
        (data: Data?, response: URLResponse?, error: Error?) -> Void in
}.resume()

或者更好地使用Alamofire

let headers : HTTPHeaders = ["Content-Type":"application/json",
                                 "Authorization":"Bearer \(yourToken)"] 
Alamofire.request(urlStr!, method: .post, parameters:[:], encoding: JSONEncoding.default, headers:headers).validate().responseJSON { response in 
}

答案 1 :(得分:0)

对我有用。请尝试一次。

 func handleData() {

        let urlStr = "YOUR URL"
        let param = ["email":"abc@gmail.com","password":"abc@1234","X-API-KEY":"YOURAPIKEY"]

        let user = "admin"
        let password = "1234"
        let credentialData = "\(user):\(password)".data(using: String.Encoding.utf8)!
        let base64Credentials = credentialData.base64EncodedString(options: [])
        let headers = ["Authorization": "Basic \(base64Credentials)"]

        Alamofire.request(urlStr, method: .post, parameters: param, encoding: JSONEncoding.default, headers:headers).responseJSON{
            response in

            switch response.result{
            case .success:
                print(response)
                break

            case .failure(let error):
                print(error)
            }
        }
    }

答案 2 :(得分:0)

let urlString = ""
let parameters = ["categories.confident": "true", "source.name" : "The New York Times", "cluster" : "false", "cluster.algorithm" : "lingo", "sort_by" : "published_at", "sort_direction" : "desc", "cursor" : "*", "per_page" : "10"]
let headers = ["X-AYLIEN-NewsAPI-Application-ID": "App-ID-Here", "X-AYLIEN-NewsAPI-Application-Key": "App-Key-Here"]

var urlComponents = URLComponents(string: urlString)

var queryItems = [URLQueryItem]()
for (key, value) in parameters {
    queryItems.append(URLQueryItem(name: key, value: value))
}

urlComponents?.queryItems = queryItems

var request = URLRequest(url: (urlComponents?.url)!)
request.httpMethod = "GET"

for (key, value) in headers {
    request.setValue(value, forHTTPHeaderField: key)
}

let task = URLSession.shared.dataTask(with: request) { (data, response, error) -> Void in
    print(response)
}
task.resume()