【问题标题】:Alamofire post json and response jsonAlamofire 发布 json 和响应 json
【发布时间】:2017-11-13 02:41:36
【问题描述】:

我正在尝试使用 Swift3 和 Alamofire 发布 JSON,它在 Postman Postman screen shot 中成功运行 但在代码中,响应是 HTML 字符串,这意味着服务器中的异常 我尝试将编码从 JsonEncoding.default 更改为 URLEncoding.default 并且效果很好,但是 3 天后,当我运行应用程序时出现同样的错误

let url = "http://mattam.net/mobileapp/addOrder"
let par:[String:Any] = ["order_restaurant":8,
                                 "order_type":1,
                                 "order_address":1,
                                 "order_within":"45 mins",
                                 "order_exacttime":"09:00 pm",
                                 "order_total":300,
                                 "order_fees":30,
                                 "order_gtotal":330,
                                 "order_user":38,
                                 "pquantity[10]":3,
                                 "pquantity[9]":1,
                                 "poption[9]":238,
                                 "pextra[10]":"80,81"]



        print(par)


        Alamofire.request(url, method: .post, parameters: par, encoding: URLEncoding.default).responseJSON{
                r in
                if r.result.isSuccess{print("------i______i-----")}
                print(r)
                if let result = r.result.value as? NSDictionary{
                    print(result)}

            }

在 PostMan 中批量编辑是

order_restaurant:8
order_type:1
order_address:1
order_within:45 mins
order_exacttime:09:00 pm
order_total:300
order_fees:30
order_gtotal:330
order_user:38
pquantity[10]:3
pquantity[9]:1
poption[9]:238
pextra[10]:80,81

而 url 是 "let url = "http://mattam.net/mobileapp/addOrder""

【问题讨论】:

  • 如果您在服务器端遇到错误,现在是否已修复?
  • 在邮递员中不行,但在应用程序中有错误

标签: ios json swift alamofire


【解决方案1】:

您的问题是您在应用中使用http 而不是https。 屏幕截图使用https,而您发布的网址(从您的代码复制)使用http

【讨论】:

    【解决方案2】:

    如果我正确理解您的问题,您需要将一些帖子详细信息作为 Json 发送到服务器,所以这里有一些代码可以做到这一点:

    private func alamoFireAjax(url: String, parameters: Parameters, callback: @escaping (DataResponse<Any>) -> Void) {
        Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON(completionHandler: callback)
    }
    

    【讨论】:

    • 我编辑了我的问题并添加了网址,如果您阅读了看起来不错的代码,但我不知道问题出在哪里,您可以自己尝试一下吗?
    • 看起来是服务器错误,这是我在加载页面时遇到的错误:MethodNotAllowedHttpException in RouteCollection.php line 218
    • 也许你的代码没有发送正确的参数,或者你的服务器上的代码不需要一个 json。
    【解决方案3】:

    我遇到了类似的问题,为了解决它,我将字典创建放在了方法调用中。大多数请求通常都可以解决,但我发现任何大于 10 行的请求都需要单独的方法处理程序。

    fileprivate func generateParams() -> [String: Any] {
    
        var params = [String: Any]()
    
        params["order_restaurant"] = 8
        params["order_type"] = 1
        params["order_address"] = 1
        params["order_within"] = "45 mins"
        params["order_exacttime"] = "09:00 pm"
        params["order_total"] = 300
        params["order_fees"] = 30
        params["order_gtotal"] = 330
        params["order_user"] = 38
        params["pquantity[10]"] = 3
        params["pquantity[9]"] = 1
        params["poption[9]"] = 238
        params["pextra[10]"] = "80,81"
    
        return params
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多