标签: urlsession

swift 4中的URLSession,用于从iOS库中上传jpeg文件,生成错误

我正在尝试将我的图像从iPhone库上传到我在PHP上运行的Web服务器.对于上传请求,我使用URLSession并从iPhone Gallery UIImagePicker中选择图像.

我从iPhone 7和iPhone模拟器中收到此错误.

来自控制台的错误代码在这里

2018-06-19 12:06:56.076335+0200 google01[4054:1274269] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
2018-06-19 12:06:56.077701+0200 google01[4054:1274269] [MC] Reading from public effective user settings.
2018-06-19 12:06:56.077701+0200 google01[4054:1274269] [MC] Reading from public effective user settings.
2018-06-19 12:07:00.633120+0200 google01[4054:1274376] [BoringSSL] Function boringssl_session_errorlog: line 2878 [boringssl_session_write] SSL_ERROR_SYSCALL(5): operation failed externally to the library
2018-06-19 12:07:00.644399+0200 google01[4054:1274552] [discovery] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}
2018-06-19 12:07:00.668971+0200 google01[4054:1274376] [BoringSSL] Function boringssl_session_errorlog: line 2878 [boringssl_session_write] SSL_ERROR_SYSCALL(5): …
Run Code Online (Sandbox Code Playgroud)

image-uploading uiimagepickercontroller ios urlsession swift4

8
推荐指数
0
解决办法
2143
查看次数

Swift URL会话和URL请求不起作用

我对这篇文章的问题非常相似,但我不完全理解答案.我已经创建了一个完成处理程序,但它似乎没有按预期工作.

func updateTeam(teamID: Int) {
    startConnection {NSArray, Int in
        //Do things with NSArray
    }
}

func startConnection(completion: (NSArray, Int) -> Void) {
    let url = URL(string: "http://www.example.com/path")
    var request : URLRequest = URLRequest(url: url!)
    request.httpMethod = "POST"
    let postString = "a=\(Int(teamInput.text!)!)"
    request.httpBody = postString.data(using: .utf8)

    let dataTask = URLSession.shared.dataTask(with: request) {
        data,response,error in
        print("anything")
        do {
            if let jsonResult = try JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary {
                self.teamResult = jsonResult
                print(jsonResult)
            }
        } catch let error as …
Run Code Online (Sandbox Code Playgroud)

urlrequest ios swift urlsession

7
推荐指数
1
解决办法
2万
查看次数

带有服务器发送事件的 URLSession 有时会返回 kCFErrorDomainCFNetwork 303

在我们的应用程序中,我们通过服务器发送的事件请求信息流。为此,我们使用 引擎盖下使用的小型库IKEEventSourceFoundation.URLSession

此信息以小型 JSON 包发送,例如:

{"type":"update","data":{"id":"1234","name":"someName","someOtherField":33,"size":"20","someAddress":"Awesome Street 111"}}

现在这对我们来说效果很好,但我们注意到有时会出现以下错误:

Error Domain=kCFErrorDomainCFNetwork Code=303 "(null)" UserInfo={NSErrorPeerAddressKey=<CFData 0x610000a84510 [0x103ccbe40]>{length = 16, capacity = 16, bytes = 0x100201bbb9131fbd0000000000000000}, _kCFStreamErrorCodeKey=-2201, _kCFStreamErrorDomainKey=4}

我理解的是kCFErrorHTTPParseFailure它试图解析的字符串似乎只是 JSON 包的一部分,例如:

{"type":"update","data":{"id":"1234","name":"so

我们目前的理解是,URLSession 正在缓冲数据,有时它会填满,最后一部分会被切掉。我们可以在终端中使用curl http://our.service.com并查看一个工作示例curl -N http://our.service.com

有人知道如何将此选项添加到URLSession,URLSessionConfigurationURLSessionTask. 或者是否有人有其他解释或解决方案(可能是服务器端)由于此错误,我们的用户有时会错过对数据的更新,我们认为这是一些无法解释的反馈的原因。

顺便说一句,我们在相应的 Android 应用程序中遇到了同样的问题

ios server-sent-events urlsession

7
推荐指数
1
解决办法
682
查看次数

使用 URLSession 为 SwiftUI 视图加载 JSON 数据

构建 SwiftUI 应用程序的网络层的行之有效的方法是什么?具体来说,您如何使用 URLSession 来构建要在 SwiftUI 视图中显示的 JSON 数据并处理从 iOS 13.4 开始可以正确发生的所有不同状态?

ios urlsession swiftui

7
推荐指数
1
解决办法
2447
查看次数

URLSession.dataTask 在每次使用 Xcode 12.5 Beta 2 时都会超时

我今天升级到最新的 Xcode 12.5 Beta 2,现在我的所有 URLSession.dataTask 请求都失败并超时。我创建了一个示例项目,它提出了一个简单的请求,但每次都失败了。它适用于 Xcode 12.5 Beta 1。

这是一个简单的请求:

guard let url = URL(string: "https://hacker-news.firebaseio.com/v0/item/8863.json?print=pretty") else { fatalError() }

let startTime = Date()

let task = URLSession.shared.dataTask(with: url) { data, response, error in
    let requestTime =  Date().timeIntervalSince(startTime)

    print("Time for request: \(requestTime)")

    if let error = error {
        updateLabel("requestTime: \(requestTime)\nError: \(error.localizedDescription)")
        return
    }
    guard let httpResponse = response as? HTTPURLResponse,
          (200...299).contains(httpResponse.statusCode) else {
        updateLabel("requestTime: \(requestTime)\n\(response.debugDescription)")
        return
    }
    if let mimeType = httpResponse.mimeType, mimeType == "text/html",
       let data = …
Run Code Online (Sandbox Code Playgroud)

xcode ios swift urlsession

7
推荐指数
1
解决办法
147
查看次数

为什么 URLSession.shared.data 失败并抱怨未连接的 nw_connection?

我对 Swift 编码还很陌生,目前正在开发我的第一个 iOS 应用程序。我的应用程序的一部分必须通过发出请求并解析它返回的 JSON 来与 Spotify API 进行通信。我有一个相对简单的async函数来实现这一点,并且在大多数情况下,它效果很好。不过,我最近以语句的形式向该函数添加了一些附加功能if,用于调整目标 URL 的构建方式。周围的代码是相同的,甚至使用request共享的。URLSession

这是我正在讨论的函数的片段:

// build the request
var request: URLRequest
if (id != nil) {
    // failing case
    let url = URL(string: "https://api.spotify.com/v1/track/\(id!)")!
    request = URLRequest(url: url)
} else {
    // working case
    var url = URLComponents(string: "https://api.spotify.com/v1/search")!
    url.queryItems = [
        URLQueryItem(name: "q", value: self.queryString),
        URLQueryItem(name: "type", value: self.typeString)
    ]
    request = URLRequest(url: url.url!)
}
request.httpMethod = "GET"
request.addValue("Bearer \(self.qe.accessToken!)", forHTTPHeaderField: "Authorization")

// …
Run Code Online (Sandbox Code Playgroud)

xcode ios async-await swift urlsession

7
推荐指数
0
解决办法
3471
查看次数

Swift:URLSession.shared.dataTask 表示状态代码 304 = 200?

我正在请求如下所示的 JSON-API:

     var request = URLRequest(url: url)
    request.httpMethod = "GET"
    request.addValue(CredentialsProvider.shared.credentials, forHTTPHeaderField: "Authorization")

    let task = URLSession.shared.dataTask(with: request as URLRequest) { data, response, error in
        guard let data = data, let _ = response, error == nil else {
            return
        }

        let response1 = response as! HTTPURLResponse
        print(response1.statusCode) // 200 instead of 304
    }
Run Code Online (Sandbox Code Playgroud)

由于服务器进行缓存(我通过 CharlesProxy 验证),我预计状态代码为 304,但已记录 200 - 有没有办法获取“真实”状态代码?

swift urlsession

6
推荐指数
1
解决办法
2429
查看次数

如何在 iOS 中执行不安全的 URLSession 查询

我正在尝试对我运行的网站执行查询。然而,目前该网站的证书无效(目前有正当理由)。

\n\n

我正在尝试使用以下代码查询它:

\n\n
private static func performQuery(_ urlString: String) {\n    guard let url = URL(string: urlString) else {\n        return\n    }\n    print(url)\n    URLSession.shared.dataTask(with: url) {\n        (data, response, error) in\n        if error != nil {\n            print(error!.localizedDescription)\n        }\n        guard let data = data else {\n            return\n        }\n        do {\n            let productDetails = try JSONDecoder().decode([ProductDetails].self, from: data)\n            DispatchQueue.main.async {\n                print(productDetails)\n            }\n        } catch let jsonError {\n            print(jsonError)\n        }\n    }.resume()\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,我得到:

\n\n
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)\nThe certificate for this server is …
Run Code Online (Sandbox Code Playgroud)

https xcode ios swift urlsession

6
推荐指数
1
解决办法
1603
查看次数

如何解决 - 合并错误 | 错误域=NSURLErrorDomain 代码=-999“已取消”

我正在尝试使用新的组合框架解析 JSON。但是,我所做的每一次尝试都会返回一个取消的错误。当我使用完全相同的 url 而没有组合时,它工作正常。

底部函数工作正常,无论我做什么,顶部函数都会给我一个错误。

static func performNetworkRequestUsingCombine(url urlWithQuery:URL){
        //let decoder = JSONDecoder()
        let publisher = URLSession.shared.dataTaskPublisher(for: urlWithQuery)
            .map({$0.data})

        .eraseToAnyPublisher()
            .sink(receiveCompletion: { (status) in
                switch status {
                    case .failure(let incomingError):
                        print(incomingError.localizedDescription)
                    case .finished:
                    break
                }
            }) { (data) in
                let dataString = String(data: data, encoding: .utf8)
                print(dataString!)
        }
        publisher.cancel()
    }

static func performNetworkRequest(url urlWithQuery: URL, dataValue : @escaping (WeatherObject)->Void){

        let decoder = JSONDecoder()
        let task = URLSession.shared.dataTask(with: urlWithQuery) { (data, response, error) in

            if error != nil {
                print(error!.localizedDescription)
                return …
Run Code Online (Sandbox Code Playgroud)

xcode ios swift urlsession combine

6
推荐指数
1
解决办法
3331
查看次数

在 Swift 中,如何从 UrlSession 获取错误类型

我的网络逻辑中有以下代码:

let task = urlSession.dataTask(with: request) { [weak self] (data, response, error) in
  
  if let error = error {        
    if error.localizedDescription.contains("The request timed out") {
      // request timeout stuff ...
    } else {
      // other errors
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

字符串匹配localizedDescription不是好的代码实践。如何像 in 子句一样获取错误的类型catch

ios nsurlsession swift nsurlsessiondatatask urlsession

6
推荐指数
1
解决办法
4272
查看次数