菜鸟教程小白 发表于 2022-12-11 19:34:51

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


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

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

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

<p>我发送请求的代码是 - </p>

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


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

    } catch let err as Error{
      print(&#34;error is&#34;, err.localizedDescription)
    }

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

let notificationJson = [
    &#34;notification&#34;:[
      &#34;body&#34; : &#34;This week&#39;s edition is now available.&#34;,
      &#34;title&#34; : &#34;NewsMagazine.com&#34;,
    ],
    &#34;data&#34; : [
      &#34;volume&#34; : &#34;3.21.15&#34;,
      &#34;contents&#34; : &#34;http://www.news-magazine.com/world-week/21659772&#34;
    ],
    &#34;android&#34;:[
      &#34;priority&#34;:&#34;normal&#34;
    ],
    &#34;apns&#34;:[
      &#34;headers&#34;:[
            &#34;apns-priority&#34;:&#34;5&#34;,
            &#34;apns-collapse-id&#34;: &#34;ON&#34;
      ]
    ],
    &#34;webpush&#34;: [
      &#34;headers&#34;: [
            &#34;Urgency&#34;: &#34;high&#34;
      ]
    ]
    ,
    &#34;to&#34; : &#34;device_token&#34;
    ] as
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您的标题不正确。您应该像这样交换键值对:</p>

<pre><code>urlRequest.setValue(&#34;application/json&#34;, forHTTPHeaderField: &#34;Content-Type&#34;)
urlRequest.setValue(&#34;Key=my_API_KEY&#34;, forHTTPHeaderField: &#34;Authorization&#34;)
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 请求与 postman 正常工作,但在使用 iOS 请求时因协议(protocol)错误而失败,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/48179919/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/48179919/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 请求与 postman 正常工作,但在使用 iOS 请求时因协议(protocol)错误而失败