对不起,我的英语不好 :)
我在iOS应用程序的Swift中通过Alamofire解析JSON响应时遇到问题。我编写了一个函数来返回JSON响应字符串。请求和响应处理我做Alamofire和JSON处理我做SwiftyJSON。首先,我声明一个名为
jsonString的变量 ,其值为 test 。然后,我向REST服务发出请求,并通过单击按钮获得JSON响应。我想使用函数
ping(url:String) 返回此响应。最后,我将返回的响应打印为测试。但是在第一次单击按钮时,从 ping 返回的值是
test
而不是响应的JSON字符串。在第二次单击按钮,我得到正确的返回值。为什么我有这个问题。Alamofire是否请求异步操作?我想等待回应。如何解决该问题,以便在首次点击时获得正确的值,而不是作为价值进行
测试 ?
这是我的代码:
var jsonString:String = "test"
func ping(url:String) -> String {
Alamofire.request(.GET, url)
.response {
(request, response, data, error) -> Void in
let json = JSONValue(data as? NSData)
self.jsonString = json.rawJSONString
}
return self.jsonString
}
@IBAction func checkOnlineStatus(sender: UIButton) {
let response:String = ping("http://test.com")
println(response)}
第一次点击,代码
return self.jsonString
将在之前运行
.response {
(request, response, data, error) -> Void in
let json = JSONValue(data as? NSData)
self.jsonString = json.rawJSONString
}
您将在第一时间从self.jsonString获得nil,第二次单击将获得第一次单击的请求数据。
如果您使用SwiftyJSON和Alamofire,则可以尝试Alamofire-
SwiftyJSON
问题内容: 是否可以为Alamofire请求添加超时处理程序? 在我的项目中,我以这种方式使用Alamofire: 编辑: 请求失败消息 错误域= NSURLErrorDomain代码= -1001“请求超时。” UserInfo = {NSUnderlyingError = 0x7fc10b937320 {Error Domain = kCFErrorDomainCFNetwork Code =
是否可以为Alamofire请求添加超时处理程序? 在我的项目中,我使用Alamofire的方式如下: 编辑: 请求失败消息 Error Domain=NSURLErrorDomain Code=-1001“请求超时。”UserInfo={NSUnderlyingError=0x7fc10b937320{Error Domain=kCFErrorDomainCFNetwork Code=-1001
我是Swift3新手,在获取Json返回然后发送请求时遇到了问题。我试图向服务器发送一个带有参数username和password的post请求,并使用带有信息的Json获得响应,但我还无法获得要返回的数据。 输出: 错误:NSURLErrorDomain:-1003状态代码:200,标头连接=关闭;“Content-type”=“Application/JSON”;“transfer-encod
问题内容: 我将Alamofire用作HTTP库,因为自Swift 3更新以来,如何根据以下示例解析JSON? 是任何对象的东西,非常新而且令人困惑。 问题答案: 如您在Alamofire测试中所见,您应将其转换为:
问题内容: 我有一个页面作为HtmlUnit中的UnexpectedPage返回,响应为JSON。我可以使用HTMLUnit进行解析还是需要一个额外的库? 问题答案: HtmlUnit不支持它。它最多可以执行JS函数。您需要事先检查返回的响应是否匹配,然后使用合适的工具进行解析。Google Gson 在此方面很有用。 如果JSON结构是事先已知的,则您甚至可以使用Gson将其转换为完全有价值的J
当我试图从我的内部web服务器获取json时,我需要处理这个挑战。我从前面的一个问题中得出了这个结论。这是我的密码 这是我收到的错误 Error Domain=NSURLErrorDomain Code=-999"已取消"UserInfo={NSErrorFailingURLKey=https://myhttpsinternaldomain.org, NSLocalizeddescription