ios - iOS:来自 URLSession.shared.dataTask 的数据(其中:url 始终为零(在 xcode 调试器中显示 0 字节错误?)
问题描述
我尝试了在网上找到的代码,但数据总是为零。但是当我在 safari 中点击它时,我可以看到一个结果......
let urlStr = "https://gmxx2.x.frxx.com:x/xxx/xxx/FR&174"
let url = URL(string: urlStr)
URLSession.shared.dataTask(with: url!, completionHandler: {
(data, response, error) in
if(error != nil){
print("error")
}else{
do{
let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! [String : AnyObject]
OperationQueue.main.addOperation({
})
}catch let error as NSError{
print(error)
}
}
}).resume()
这是似乎没有显示问题的响应值:
▿ Optional<NSURLResponse>
- some : <NSHTTPURLResponse: 0x6000004e14c0> { URL: https://www.burningmeter.com/tournaments.json?page=1 } { Status Code: 200, Headers {
"Access-Control-Allow-Origin" = (
"*");
"Cache-Control" = (
"max-age=0, private, must-revalidate");
Connection = (
"keep-alive");
"Content-Type" = (
"application/json; charset=utf-8");
Date = (
"Fri, 08 Feb 2019 10:46:28 GMT" );
Etag = (
"W/\"c9cf3d615d984a1392782546f941543b\"");
Server = (
Cowboy);
"Strict-Transport-Security" = (
"max-age=31536000");
"Transfer-Encoding" = (
Identity);
Via = (
"1.1 vegur");
"X-Content-Type-Options" = (
nosniff);
"X-Frame-Options" = (
SAMEORIGIN);
"X-Request-Id" = (
"08e98d62-cf30-4028-9cd9-12668f1754ca");
"X-Runtime" = (
"0.021782" );
"X-Xss-Protection" = (
"1; mode=block");} }
误差值等于零。
我准确地说我App Transport Security Settings
投入YES
info.plist
编辑:
它适用于 [] 的选项,但我只寻找等于 0 字节的数据值,但 json 有一个值,所以它可以工作。
即使使用该参数:EDIT2:
但是当我尝试使用该 WS 时:它不起作用。
https://gmp2.newtelapps.fr:5000/guests/contacts/FR&174
我能看到的唯一区别是 safari 中的响应格式
https://www.burningmeter.com/tournaments.json?page=1
=> {...}
https://gmxx2.x.frxx.com:x/xxx/xxx/FR&174
=> [{...}]
错误信息: Could not cast value of type '__NSArrayI' (0x108ac6da8) to 'NSDictionary' (0x108ac5818).
提前致谢。
解决方案
我对您的代码做了一些修改,我已经调试并得到了响应。
let urlString = "https://www.burningmeter.com/tournaments.json?page=1"
guard let requestUrl = URL(string:urlString) else { return }
var request = URLRequest(url:requestUrl)
request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request) {
(data, response, error) in
if error == nil, let usableData=data {
let response = try? JSONSerialization.jsonObject(with: usableData, options:[])
print(response) //JSONSerialization
}
}
task.resume()
推荐阅读
- django - 如何在 select_related 模型上进行注释?
- paypal - 贝宝运费计算器
- arrays - WebGL GL_INVALID_OPERATION 超出范围错误
- android - Unity Android 构建错误 - 所需的 API 级别
- python - 在数组中找到最接近给定值的值
- java - websocket Session#setMaxTextMessageBufferSize 慢吗,我可以动态设置吗
- mysql - 选择带有 id 1 和 2 标签但不带有 id 3 或 4 的标签的项目
- c# - 将 C# 丢弃运算符用于方法返回值是否有意义?
- angular - 由于 chromedriver_74.0.3729.6,ng e2e 无法启动
- python - 如何在特定距离内的点云中找到 Zmin?