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

ios - 在 Swift 4.0 中获取上个月趋势存储库时出错 - Github API

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

我正在将以下 curl 转换为 Swift 但不幸的是,在 PlayGround 上运行时出现以下错误:

可选([“错误”:<__NSSingleObjectArrayI 0x60c00000da70>({ 代码=无效; 场 = q; message = "\"`date\"不是可识别的日期/时间格式。请提供 ISO 8601 日期/时间值,例如 YYYY-MM-DD。"; 资源=搜索; }), "documentation_url": https://developer.github.com/v3/search/, “消息”:验证失败])

这是下面的cUrl,。它在终端执行时确实有效。

curl -G https://api.github.com/search/repositories --data-urlencode "q=created:>`date -v-1m '+%Y-%m-%d'`"--data- urlencode "sort=stars"--data-urlencode "order=desc"-H "Accept: application/json"

这是我的要求:

    let sessionConfig = URLSessionConfiguration.default

    let session = URLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil)

    guard var urlComponent = URLComponents(string: "https://api.github.com/search/repositories") else { return }
    let items = [
        URLQueryItem(name: "q", value: "created:>`date -v-1m '+%Y-%m-%d'`"),
        URLQueryItem(name: "sort", value: "stars"),
        URLQueryItem(name: "order", value: "desc")
    ]

    urlComponent.queryItems = items
    guard let url = urlComponent.url else { return }

    var request = URLRequest(url: url)
    request.httpMethod = "GET"


    // Headers
    request.addValue("application/json", forHTTPHeaderField: "Accept")
    request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")

    // Form URL-Encoded Body


    /* Start a new Task */
    let task = session.dataTask(with: request, completionHandler: { (data: Data?, response: URLResponse?, error: Error?) -> Void in
        if (error == nil) {
            // Success
            let statusCode = (response as! HTTPURLResponse).statusCode
            do {
                let json = try JSONSerialization.jsonObject(with: data!, options: []) as? [String: Any]
                print(json)
            } catch {
                print(error)
            }
        }
        else {
            // Failure
            print("URL Session Task Failed: %@", error!.localizedDescription);
        }
    })
    task.resume()
    session.finishTasksAndInvalidate()



Best Answer-推荐答案


cURL 在终端上运行一个脚本,因此,它将日期 -1m 作为 q 参数传递。例如,如果这个答案的日期是 2017-11-13,那么 date -v-1m '+%Y-%m-%d' 将是 >2017-10-13

let items = [
    URLQueryItem(name: "q", value: "created:>2017-10-13"),
    URLQueryItem(name: "sort", value: "stars"),
    URLQueryItem(name: "order", value: "desc")
]

关于ios - 在 Swift 4.0 中获取上个月趋势存储库时出错 - Github API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47254710/

回复

使用道具 举报

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

本版积分规则

关注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