我必须发送一个请求正文数组,以下是我必须发送的请求正文
[{
"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开发的新手,所以我们将不胜感激。
答案 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)
}
}