iOS Swift 3 发布问题

艾伦·廷吉

我在 iOS 应用程序中使用以下 Swift 3 代码来尝试更新后端 MySQL 数据库:

    var request = URLRequest(url: URL(string: "https://str8red.com/updateAPNS")!)
    request.httpMethod = "POST"
    let postString = "devicetoken=gjhgjgjgkkgggkgkghgkgkhjg"
    request.httpBody = postString.data(using: .utf8)
    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else {                                                 // check for fundamental networking error
            print("error=\(String(describing: error))")
            return
        }

        if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
            print("statusCode should be 200, but is \(httpStatus.statusCode)")
            print("response = \(String(describing: response))")
        }

        let responseString = String(data: data, encoding: .utf8)
        print("responseString = \(String(describing: responseString))")
    }
    task.resume()

当我运行此代码时,iOS 会按预期运行并从 Web 服务器返回 500 错误。当我检查 Webserver 报告时,出现以下错误:

MultiValueDictKeyError at /updateAPNS/
        "'devicetoken'

更令人困惑的是,反馈表明:

POST: No POST data

iOS 不应该像上面代码中的第 3 行所述那样发布 devicetoken 变量吗?如果不是,我如何在我的视图中访问 devicetoken 变量?

我的 Django 视图在下面,以防万一它可能有帮助:

def updateAPNS(request, extra_context={}):

currentUser = request.user

currentUserID = currentUser.id

if not currentUserID:

    return HttpResponse("APNS is NOT Updated")

else:

    APNSUpdate, created = APNSDevice.objects.update_or_create(user_id=currentUserID,
                                                                     defaults={"user_id": currentUserID,
                                                                               "registration_id": request.POST['devicetoken']})

    return HttpResponse("APNS is Updated")
艾伦·廷吉

在终端上使用 curl 测试发布请求后,我得到:

  <h1>Forbidden <span>(403)</span></h1>
  <p>CSRF verification failed. Request aborted.</p>

  <p>You are seeing this message because this HTTPS site requires a &#39;Referer header&#39; to be sent by your Web browser, but none was sent. This header is required for security reasons, to ensure that your browser is not being hijacked by third parties.</p>

我一看到这个,我就@csrf_exempt在我的视图之上添加了它,一切都完美无缺。

对于任何想了解更多关于 curl 的人,请前往:

https://superuser.com/questions/149329/what-is-the-curl-command-line-syntax-to-do-a-post-request

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift无法导入Sqlite3 iOS

来自分类Dev

Swift主从模板问题(iOS 8 beta 3)

来自分类Dev

Cocoapods路径问题(iOS Swift)

来自分类Dev

Titanium Appcelerator App(IOS)发布问题

来自分类Dev

iOS / Swift:UITableViewCell高度问题

来自分类Dev

是否可以在适用于iOS 9的Xcode 8 / Swift 3 Beta中发布应用程序?

来自分类Dev

Swift 3 iOS兼容性

来自分类Dev

无法发布Swift IOS开发

来自分类Dev

注册推送通知Swift 3 + iOS 10

来自分类Dev

iOS 10和Swift 3转换问题

来自分类Dev

从iOS发布到PHP的问题

来自分类Dev

iOS / Swift:UITableViewCell高度问题

来自分类Dev

ios Swift图表问题

来自分类Dev

iOS Swift TableviewCell问题

来自分类Dev

队列和Swift 3问题

来自分类Dev

转换为Swift 3问题

来自分类Dev

GooglePlaces API Swift 3问题

来自分类Dev

NPGradientImage-Swift 3的问题

来自分类Dev

Swift 3 Color Space macOS不是IOS

来自分类Dev

Swift 3 UITableView问题

来自分类Dev

swift 3 ios tableview 按单元滚动

来自分类Dev

来自对象的 JSON 与 iOS Swift 3 中的数组问题

来自分类Dev

Swift 3:过滤 IOS 通知

来自分类Dev

iOS Swift 3 POST 问题

来自分类Dev

Firebase 在 Xcode 8.3 上发布 iOS 10.3 Swift 3 FCM 通知不起作用

来自分类Dev

swift 3, iOS - UIImageView 背景

来自分类Dev

AWS 分析 - swift 3 - iOS?

来自分类Dev

iOS Swift 3 CompletionHandler 不起作用

来自分类Dev

Swift 3 - iOS 11.2 上的 UICollectionview 问题