• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 请求与 postman 正常工作,但在使用 iOS 请求时因协议(protocol)错误而失败

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:34:51 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试运行此请求,我这样做的原因是,我想在循环中使用不同的字符串测试推送通知(我的意思是很多)。

当我尝试使用 Postman 执行此操作时,它运行良好我的意思是我尝试发送 300 个请求并且它们运行良好,但是当我使用 执行此操作时请求出错URLSession.

我在控制台上遇到的错误是- 数据任务中有错误 操作无法完成。协议(protocol)错误 2018-01-10 08:48:47.735403+0530 通用时间表[18533:1210462] TI​​C 读取状态 [4:0x0]: 1:57 2018-01-10 08:48:47.735555+0530 通用时间表[18533:1210462] TI​​C 读取状态 [4:0x0]: 1:57

我发送请求的代码是 -

    func testNotifications(times: Int, completionHandler: @escaping (String) -> Void) {
    print("test notifications called")
    let url = "https://fcm.googleapis.com/fcm/send"
    var urlRequest = URLRequest(url: URL(string: url)!)
    urlRequest.httpMethod = "OST"
    let session = URLSession(configuration: .ephemeral)
    urlRequest.setValue("Content-Type", forHTTPHeaderField: "application/json")
    urlRequest.setValue("Authorization", forHTTPHeaderField: "Key=my_API_KEY")


    do{
        let jsonData = try JSONSerialization.data(withJSONObject: notificationJson, options: .prettyPrinted)
        urlRequest.httpBody = jsonData

    } catch let err as Error{
        print("error is", err.localizedDescription)
    }

    session.dataTask(with: urlRequest) { (data, response, error) in
            if error != nil{
                print("error is there in data task\n", error?.localizedDescription ?? "Error Hard Coded String")
                return
            }
            print("response is", response)
            print("Shoud be a success")
            DispatchQueue.global(qos: .userInitiated).async {
                DispatchQueue.main.async {
                    completionHandler("responseString")
                    print("success")
                }
            }
            }.resume()
}

let notificationJson = [
    "notification":[
        "body" : "This week's edition is now available.",
        "title" : "NewsMagazine.com",
    ],
    "data" : [
        "volume" : "3.21.15",
        "contents" : "http://www.news-magazine.com/world-week/21659772"
    ],
    "android":[
        "priority":"normal"
    ],
    "apns":[
        "headers":[
            "apns-priority":"5",
            "apns-collapse-id": "ON"
        ]
    ],
    "webpush": [
        "headers": [
            "Urgency": "high"
        ]
    ]
    ,
    "to" : "device_token"
    ] as [String : Any]



Best Answer-推荐答案


您的标题不正确。您应该像这样交换键值对:

urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
urlRequest.setValue("Key=my_API_KEY", forHTTPHeaderField: "Authorization")

关于ios - 请求与 postman 正常工作,但在使用 iOS 请求时因协议(protocol)错误而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48179919/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap