在Alamofire请求中发送请求正文数组

时间:2018-08-17 10:04:47

标签: ios swift alamofire

我必须发送一个请求正文数组,以下是我必须发送的请求正文

[{
   "user": "abc",
   "id": "demo"
}]

我尝试了什么?

var requestArray = [[String: String]]()
let params = [
            "user": "abc",
            "id": "demo"
        ]
requestArray.append(params)

var request = URLRequest(url: URL.init(string: myUrl)!)
request.httpMethod = ".post"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try! JSONSerialization.data(withJSONObject: requestArray)

Alamofire.request(request)
         .response{ 
             response in
             print("Request Body:- \(response.request)")
             print(response)
}

我面临的问题

URL在Postman和Android应用程序中均能完美运行

以上解决方案不适用于我。我的网络服务返回了400 error code (Bad Request)

我是iOS开发的新手,所以我们将不胜感激。

5 个答案:

答案 0 :(得分:1)

我已经解决了这个问题。我正在和你们一起解决一些问题,突然间它奏效了!

那主要问题是什么?

  • 我将request.httpMethod = ".post"更改为request.httpMethod = "post"

最初,当我评论@NiravD时,此方法不起作用,但经过一段时间进行以下更改后,我能够看到输出

其他更改以在控制台上查看响应

  • .response替换为.responseJSON

非常感谢所有帮助过的人:)

答案 1 :(得分:0)

首先Alamofire要求Parameter的类型为[String: Any],第二个则不需要这样的发布请求。不需要JSONSerialization。试试这个,没关系。

  let params: [String: Any] = [
                "user": "abc",
                "id": "demo"
            ]


            Alamofire.request(URL.init(string: myUrl)!, method: .post, parameters: params)
                .validate()
                .responseString {
                    (response) in
                     print(response)
            }

答案 2 :(得分:0)

请尝试

//这应该适合您所需的工作[[String:Any]]

var requestArray = [AnyObject] // => Array to conatin dictionaries of type [String: Any]
var dictionaryObject = [String: AnyObject] // => to create some dictionary to append in requestArray
dictionaryObject["user"] = "abc"
dictionaryObject["id"] = "demo"
requestArray.append(dictionaryObject)

Alamofire.request(URL.init(string: myUrl)!, method: .post, parameters: requestArray).validate().responseString { (response) in
    print(response)
}

答案 3 :(得分:0)

可能是您缺少标题。您可以尝试添加可以看到邮递员的标题吗?

答案 4 :(得分:-2)

您必须通过Alamofire.request而不是request传递requestArray

Alamofire.request(requestArray)
manager.request(url, method: .get, headers: AUTH_HEADER).responseJSON { response in

    switch response.result {
        case .success:
            //whatever you want to do in succes

        case .failure(let error):
            if let del = self.delegate {
                //do what you want
            }
            print(error)
    }
}