我正在try 使用Google Cloud Storage REST API上传图片,但不断收到以下错误: NSURLErrorDomain Code=-1005 "The network connection was lost."

        var components = URLComponents(string: "https://storage.googleapis.com/upload/storage/v1/b/\(bucketName)/o")!
        components.queryItems = [
            URLQueryItem(name: "uploadItem", value: "media"),
            URLQueryItem(name: "name", value: filename)
        ]
        
        var request = URLRequest(url: components.url!)
        request.setValue("Authorization", forHTTPHeaderField: "Bearer \(accessToken)")
        request.setValue("image/jpeg", forHTTPHeaderField: "Content-Type")
        request.httpMethod = "POST"
        
        let (data, response) = try await URLSession.shared.upload(for: request, from: try! Data(contentsOf: fileURL))
        if let httpResponse = response as? HTTPURLResponse {
            print("Status code:", httpResponse.statusCode)
            print("Response:", String(data: data, encoding: .utf8) ?? "")
        }

有趣的是,使用其他语言,如Kotlin ,我没有错误,文件被正确上传.

val contentType = "image/jpeg".toMediaType()
val requestBody = file.asRequestBody(contentType)
val request = Request.Builder()
    .url("https://www.googleapis.com/upload/storage/v1/b/${BUCKET_NAME}/o?uploadType=media&name=$fileName")
    .addHeader("Authorization", "Bearer $accessToken")
    .post(requestBody)
    .build()
val client = OkHttpClient()
val response = client.newCall(request).execute()

推荐答案

您的代码中有一个小错误.您必须交换了标头名称和值.

替换以下行

request.setValue("Authorization", forHTTPHeaderField: "Bearer \(accessToken)")

使用

request.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")

Ios相关问答推荐

iPhone:iOS 17.4中没有气压数据

不使用iOS 17修改器修改SWIFT用户界面视图

如何将模糊输入/模糊输出添加到SwiftUI中的非对称过渡?

GraphQL iOS Apollo客户端自动持久化查询导致崩溃

磁盘上的Objective-C ISA指针与实例化对象时的比较

封装 Swift 导入

iOS Swift 应用程序实例的存活时间

如何在Combine发布者之间强制执行最小延迟

SwiftUI:同时拖动父视图和子视图,但手指分开

弹出视图后使所有背景 UI 模糊

为什么 Safari 在使用 iOS 6 设备进行远程调试时显示No Inspectable Applications?

在 Swift 中将 HTML 转换为纯文本

Xcode 项目格式:3.1、3.2、6.3 和 8.0 有什么区别?

如何使用 Contacts Framework 获取 iOS 9 中的所有联系人记录

UITextView 从文本的底部或中间开始

Swift 中的日期到毫秒和回溯到日期

AVAudioRecorder 抛出错误

闭包不能隐式捕获变异的 self 参数

SwiftUI 应用生命周期 iOS14 AppDelegate 代码放哪里?

Xcode 6 进程启动失败:try 启动应用程序超时