我是Swift3新手,在获取Json返回然后发送请求时遇到了问题。我试图向服务器发送一个带有参数username和password的post请求,并使用带有信息的Json获得响应,但我还无法获得要返回的数据。
输出:
错误:NSURLErrorDomain:-1003状态代码:200,标头连接=关闭;“Content-type”=“Application/JSON”;“transfer-encoding”=标识
Android上的请求如下所示:
"{\n" +
" \"jsonrpc\": \"2.0\",\n" +
" \"id\": \"1\",\n" +
" \"method\": \"call\",\n" +
" \"params\": [\n" +
" \"" + LOGIN_TOKEN + "\",\n" +
" \"session\",\n" +
" \"login\",\n" +
" {\n" +
" \"username\": \"" + userName + "\",\n" +
" \"password\": \"" + password + "\"\n" +
" }\n" +
" ]\n" +
"}";
这是我应该发送的请求:
"{ \"jsonrpc\": \"2.0\", \"id\": 1, \"method\": \"call\", \"params\": [ \"00000000000000000000000000000000\", \"session\", \"login\", { \"username\": \"root\", \"password\": \"admin01\" } ] }"
这是我的代码:
override func viewDidLoad() {
var userName = "root"
var password = "admin01"
//var LOGIN_TOKEN = 0000000000000000
let jsonObject: [String: Any] =
["jsonrpc" : 2.0,
"id": 1,
"method": "call",
"params": [ "00000000000000",
"session",
"login",
[ "username": userName,
"password": password]],
]
do {
let jsonData = try JSONSerialization.data(withJSONObject: jsonObject, options: .prettyPrinted)
// here "jsonData" is the dictionary encoded in JSON data
let decoded = try JSONSerialization.jsonObject(with: jsonData, options: [])
// here "decoded" is of type `Any`, decoded from JSON data
// you can now cast it with the right type
if let dictFromJSON = decoded as? [String:String] {
// use dictFromJSON
}
} catch {
print(error.localizedDescription)
}
Alamofire.request("http://192.168.1.1/ubus", method: .post, parameters: jsonObject, encoding: JSONEncoding.default)
.responseJSON { response in
print(response)
//to get status code
if let status = response.response?.statusCode {
switch(status){
case 201:
print("example success")
default:
print("error with response status: \(status)")
}
}
//to get JSON return value
if let result = response.result.value {
let JSON = result as! NSDictionary
print(JSON)
}
}
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
您的JSON对象似乎无效
有非常有用的JSON验证器是免费的。首先想到的是http://jsonlint.com
我认为,根据您发布的代码,您希望您的jsonObject看起来像这样,这是一个有效的JSON:
[
{
"jsonrpc": 2.0,
"id": 1,
"method": "call",
"params": ["00000000000000", "session", "login"],
"username": username,
"password": password
}
]
我假设username
和password
变量是您已经分配的字符串?
json 库能够解析字符串或文本中的 JSON 内容。 该库将 JSON 解析为 Python 字典或列表,也能将 Python 字典或列表转换为 JSON 字符串。 解析 JSON 如下的 JSON 格式的字符串: json_string = '{"first_name": "Guido", "last_name":"Rossum"}' 如下代码能够将其解析: import json par
问题内容: 如何使用jQuery解析此json? 问题答案: 术语“解析”有点放错了位置,因为它已经是JSON格式。 您无需解析它,而只需对其进行访问。如果它是JSON格式的大String,则确实需要在访问之前先将其解析为可用的JSON对象。 此JSON包含一个属性,而该属性又包含一个array 。您可以使用点运算符访问属性。您可以使用给定的索引获取数组项,其中零表示第一项。 该数组又包含一个对象
主要内容:什么是 JSON,在 JavaScript 中解析 JSON 数据,解析嵌套的 JSON 数据,将数据转换为 JSONJSON 全称为“JavaScript Object Notation”,是当前最流行的一种轻量级的数据交换格式,用来存储和传输数据,通常服务器端与客户端在进行交互时就是使用 JSON 格式的数据。 什么是 JSON JSON 是从 JavaScript 脚本中演变而来的,并且使用 JavaScript 中的语法来描述数据。与 XML 一样,JSON 也是一种基于文本的
问题内容: 当响应数据以多余的字符开头时,需要帮助解析JSON。 我可以使用JSON提取查询从示例中提取数据- 但是,我找不到任何合适的方法来从以下JSON对象提取数据: 尝试使用通配符以–来转义JSON对象之前的前导字符,但没有运气 任何帮助将非常感激 问题答案: 这一点使您的JSON有点无效。我建议使用JSR223 PostProcessor 和Groovy语言代替: 上面的代码将与JSON
如何使用GSON解析这个json? 我的代码: 我的stacktrace com.google.gson.JsonSyn出租车异常:java.lang.IllegalStateExctive:预期BEGIN_OBJECT但BEGIN_ARRAY在第1行第2列路径$com.google.gson.internal.bind.ReflecteTypeAdapterFactory$Adapter.rea
我的SoapUI Groovy脚本有问题。我有以下json(简化): 在之前的测试步骤中,我将XXX和YYY的值作为请求参数,并将其提取为字符串列表,但我的问题是我需要提取数据内容。XXX和数据。YYY,但是当我想在循环中这样做的时候,我总是得到null。我的代码: 是否有任何选项可以在循环中将此“id”传递给 content.data。{id} 获取任何内容,而不是空值 亲切问候
问题内容: 我正在创建一个复杂的JavaScript库,用于与公司的服务器端框架一起使用。 服务器端框架将其数据编码为简单的XML格式。没有花哨的命名空间或类似的东西。 理想情况下,我想将浏览器中的所有数据解析为JSON。但是,如果这样做,我需要重写一些服务器端代码以吐出JSON。这很痛苦,因为我们拥有无法轻易更改的公共API。 我真正关心的是浏览器中解析JSON和XML的性能。真的有很大的区别要
问题内容: 我正在使用NewtonsoftJson库来解析json,但我不知道如何使用它。我使用JObject解析了字符串。当我在即时窗口中输出JObject实例的值时,我得到了:- 我应该怎么做才能获得这个工作的价值? 问题答案: 我个人更喜欢将JavaScriptSerializer与.NET环境中的JSON一起使用。默认情况下,它将返回Dictionary结果,但可用于解析到自定义对象(或者