代码之家  ›  专栏  ›  技术社区  ›  Melissa Stewart

来自Swift的POST请求在“邮递员”中工作时失败

  •  2
  • Melissa Stewart  · 技术社区  · 6 年前

    这是我的密码,

    import Foundation
    
    let url = URL(string: "http://example.com/xx/x/xxx/sports")!
    var request = URLRequest(url: url)
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    request.httpMethod = "POST"
    let postString = "client_id=xx&client_secret=yy"
    request.httpBody = postString.data(using: .utf8)
    let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
        guard let data = data else {return}
        do{
            //try validate(response)
            //parse data
            print(response)
        }catch{
            print(error)
        }
    
        //print(String(describing: data))
    }
    task.resume()
    

    有人能帮我吗?

    2 回复  |  直到 6 年前
        1
  •  2
  •   fewlinesofcode user10694837    6 年前

    405方法不允许响应状态代码指示请求 方法是服务器已知的,但目标不支持该方法

    服务器必须在405响应中生成允许标头字段 方法。

    检查httpMethod。你可能需要 GET 或其他HTTP方法,而不是 POST

    更新:

    let postString = "client_id=xx&client_secret=yy" 具有 let postString = "{client_id=\"xx\", client_secret=\"yy\"}"

    你也应该使用 URLSession.shared.dataTask(with: request) 不与 url . 请参阅下面的代码:

    URLSession.shared.dataTask(with: request) { data, response, error in
      if let response = response, let data = data {
        print(response)
        print(String(data: data, encoding: .utf8))
      } else {
        print(error)
      }
    }
    

    当你使用

    let task = URLSession.shared.dataTask(with: url) { (data, response, error) in...
    

    你的 request 设置代码被忽略。GET方法是默认方法,在上不允许使用它

        2
  •  0
  •   Himanth    6 年前

    我有一个django REST api,当通过POSTMAN调用时,它可以完美地工作

    如果它是对邮递员的工作,那么你可以从它本身获得代码。复制代码并粘贴到操场上。它应该会起作用。