json - 如何使用 alamofire 在 HTTP 请求中发送 json
问题描述
我还在学习 Swift 编程,我已经成功使用 Alamofire 使用服务,但现在我面临以下问题,我有一个服务,我在 URL 中发送了 2 个 json,我真的不知道如何发送这些数据,我看过一些例子,但我仍然无法理解。已经配置了安全策略但是问题是一样的
这是我的网址{{url}}apps/Search2/{"search":"","user":14,"category":2,"numero":0,"subgroup":-1,"tipo": -1,"子类别":-1,"cantidad":0}/{"max":5000,"minimo":1}
这就是我一直在尝试的
static func loadMenuWithFilter(search : String, userId : Int, categoryId : Int ){
let menu : Parameters = ["search" : search, "user" : userId, "category" : categoryId, "numero" : 0, "subgroup" : -1, "tipo" : -1, "subcategory" : -1,"cantidad" : 0]
Alamofire.request(AlamofireConstants.MENU_FILTER, method: .get, parameters: menu, encoding: JSONEncoding.default)
.validate(statusCode: 200..<300).responseData { response in
switch response.result {
case .failure(let error):
print("error ==> \(error)")
case .success(let data):
do{
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let result = try decoder.decode(Menu.self, from: data)
print("MenuController \(result)")
} catch {
print("MenuController \(error)")
}
}
}
}
显然我没有成功,因为我确信这不是正确的方法。我的服务响应是 404
解决方案
找了几篇帖子后,我找到了我的问题的解决方案,因为我提到我需要的是在我的 URL 链中发送一个 json,应该注意它们不是参数,即使到现在我也不明白为什么我的问题被标记为重复。但解决方案是将我的变量菜单转换为参数类型,将其转换为字符串,然后简单地将其与 URL 连接起来。通过此操作,服务已成功执行,无需执行我在评论中指出的所有设置,也无需执行App Transport Security中的配置,也无需将我的变量菜单传递为Encoding.default
. 这些都不起作用。
这很简单
ConvertJson.jsonToString(json: menu as AnyObject)
class func jsonToString(json: AnyObject) -> String{
var item : String!
do {
let data1 = try JSONSerialization.data(withJSONObject: json, options: JSONSerialization.WritingOptions.prettyPrinted) // first of all convert json to the data
let convertedString = String(data: data1, encoding: String.Encoding.utf8) // the data will be converted to the string
item = convertedString!
} catch let myJSONError {
print(myJSONError)
}
return item
}
我从这个链接获得了示例代码,他们有类似的问题
推荐阅读
- c# - 如何在文本文件中的特定位置写入文本
- c# - 如何从 Facebook 群组会员问题中获取答案?
- javascript - 这可以通过 JavaScript 中的 1 个替换语句和 1 个正则表达式来实现吗?
- r - 如何在一定长度下转换 r 中的列?
- plc - 如何使用 Python 在 plc 中将数据写入 int 值
- java - 如果没有嵌套的 switch 语句,我们可以在 Java 中创建功能菜单吗?
- sql - SQL:有没有办法让检查约束引用另一个表
- c++ - 如何将 chrono::steady_clock::duration 转换为 ostream?
- vim - Vimrc 设置允许光标在空白处自由移动
- python - 枚举 auto() 值上的 Mypy 错误