代码之家  ›  专栏  ›  技术社区  ›  Doing Things Occasionally

Alamoire发送零

  •  0
  • Doing Things Occasionally  · 技术社区  · 6 年前

    我正在通过Alamoire发送一个JSON请求,但是函数正在发送nil。即使我已经验证了所有的项目都能正常工作。

    帮助程序函数:

    func requestserver(umethod:httpmethod,path:string,body:[string:any]?,uencoding:parameterencoding,uheaders:[string:any]?,“完成处理程序:@escaping(json)->void)”。{
    
    设为url=baseurl?.AppendingPathComponent(路径)
    
    刷新令牌如果需要{
    alamofire.request(url!,方法:方法,参数:body,编码:encoding,头:nil).responsejson(response)in
    
    开关响应结果{
    case.success(让值):
    让jsondata=json(值)
    完成处理程序(jsondata)
    打破
    案例.失败:
    完成处理程序(无)
    打破
    }
    }
    }
    
    }
    

    函数发送nil:。

    func pickorder(orderid:int,completionhandler:@escaping(json)->void){
    让path=“api/driver/order/pick/”
    let header:[string:any]=[“authorization”:“bearer”+self.accesstoken]
    
    let body:[字符串:任意]。=[
    “order_id”:“\(orderid)”
    ]
    打印(“header”,header,“body”,body)
    请求服务器(.post,path,body,urlencoding(),header,completionHandler)
    }
    

    任何见解都会有所帮助!

     func requestServer(_ method: HTTPMethod,_ path: String,_ body: [String : Any]?,_ encoding: ParameterEncoding,_ headers: [String : Any]?,_ completionHandler: @escaping (JSON) -> Void){
    
            let url = baseURL?.appendingPathComponent(path)
    
            refreshTokenIfNeed {
                Alamofire.request(url!, method: method, parameters: body, encoding: encoding, headers: nil).responseJSON{ (response) in
    
                    switch response.result {
                    case .success(let value):
                        let jsonData = JSON(value)
                        completionHandler(jsonData)
                        break
                    case .failure:
                        completionHandler(nil)
                        break
                    }
                }
            }
    
        }
    

    发送nil的函数:

      func pickOrder(orderId: Int, completionHandler: @escaping (JSON) -> Void) {
            let path = "api/driver/order/pick/"
            let header: [String: Any] = ["Authorization": "Bearer " + self.accessToken]
    
            let body: [String: Any] = [
                "order_id":"\(orderId)"
            ]
            print("header", header, "body", body)
            requestServer(.post, path, body, URLEncoding(), header, completionHandler)
        }
    

    enter image description here

    任何见解都会有所帮助!

    2 回复  |  直到 6 年前
        1
  •  0
  •   PPL    6 年前

    在这一行中,函数名为 requestServer ,您正在发送 headers nil ,请同时传递标题。

    Alamofire.request(url!, method: method, parameters: body, encoding: encoding, headers: nil).responseJSON{ (response) in
    

    应该是这样的,

    Alamofire.request(url!, method: method, parameters: body, encoding: encoding, headers: headers).responseJSON{ (response) in
    

    试试看。

    更新

    以下代码工作

        let params = ["test":"123"]
        Alamofire.request("url", method: .post, parameters: params, encoding: URLEncoding(), headers: nil).responseJSON { (test) in
    
        }
    
        2
  •  1
  •   Chanchal Chauhan    6 年前

    通过 JSONEncoding.default 在发送JSON的方法中:

    requestServer(.post, path, body, JSONEncoding.default, header, completionHandler)
    

    并在标题部分传递标题值:

    Alamofire.request(url!, method: method, parameters: body, encoding: encoding, headers: headers)
    

    还要检查错误。打印 print(response.error?.localizedDescription) 在里面 .failure