首页 文章

如何在swift中将URL标头添加到url?

提问于
浏览
0

This is my header

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

    它对我有用 . 尝试一次 .

    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)
                }
            }
        }
    
  • 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()
    
  • 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 
    }
    

相关问题