代码之家  ›  专栏  ›  技术社区  ›  Salman Ghumsani

在swift 3.2中使用json和标头请求AFNetworking

  •  1
  • Salman Ghumsani  · 技术社区  · 7 年前
    let header = [
                "Content-Type":"application/json",
                "X-Source":"iOS",
                "Authorization":token]
    let strURL = "ValidURL"
    
    
    let manager = AFHTTPSessionManager()
    let serializer = AFHTTPRequestSerializer()
        for (_,dict) in header.enumerated() {
            serializer.setValue("\(dict.value)", forHTTPHeaderField: "\(dict.key)")
        }
        manager.requestSerializer = serializer
    
       let req = serializer.request(withMethod: "POST", urlString: strURL, parameters: params, error: nil)
       manager.dataTask(with: req as URLRequest) { (response, data, error) in
            print(error)
            print(response)
            print(data)
        }
    //No response from this method
    

    此外,我尝试了:

    var request = URLRequest(url: URL(string: strURL)!)
    request.httpMethod = "POST"
    for (_,dict) in header.enumerated() {
            request.setValue("\(dict.value)", forHTTPHeaderField: "\(dict.key)")
        }
    request.httpBody = try! JSONSerialization.data(withJSONObject: params, options: .prettyPrinted)
    manager.dataTask(with: request) { (response, data, error) in
         print(error)
         print(response)
         print(data)
    }
    

    manager.post(strURL, parameters: params, progress: nil, success: { (sessionTask, respose) in
                if let dict = respose as? Dictionary<String,Any> {
                    print(dict)
                } else {
                }
            }) { (task, error) in
                print(error)
            }
    
    //It Give me: failed: bad request (400)
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Lou Franco    7 年前

    这里有两个问题

    1. 当您使用dataTask方法时,您将返回一个任务对象。你需要打电话 resume() 当您希望发送请求时,在它上面。

    2. 错误表明JSON正文不正确。那是你的 params