gpt4 book ai didi

swift - 如何将引号(“)包含到 Swift 中 HTTP Head 字段使用的字符串中

转载 作者:可可西里 更新时间:2023-11-01 01:39:36 25 4
gpt4 key购买 nike

最近我使用GitHub API 请求一些资源,我发现Etag 可以帮助我,因为它可以避免重复的URL 请求。但是,我在包含 ETag 的 HTTP 请求中遇到了问题。

根据 ETag( https://en.wikipedia.org/wiki/HTTP_ETag ),如果你想比较之前的 Etag 和当前的 URL 请求结果,你应该在 HTTP Header 中发送该信息,包含在 HTTP Header Field 中的键值对应该有这样的形式这个

 If-None-Match: "686897696a7c876b7e"

从上面的观察来看,如果我得到这样一个Etag

 Etag = "W/\"e1a6465809efe351293dd5bda041a795\""

我应该保存部分 e1a6465809efe351293dd5bda041a795

然后我在 swift 中使用两种代码来执行 URL 请求

第一种方法(包括引号)

// components[1]:String = "e1a6465809efe351293dd5bda041a795"
request.setValue("\"\(components[1])\"", forHTTPHeaderField: "If-None-Match")

第二种方法(不含引号)

// components[1]:String = "e1a6465809efe351293dd5bda041a795"
request.setValue("\(components[1])", forHTTPHeaderField: "If-None-Match")

即使 Etag 没有改变,它们都无法工作。

结果是这样的:

status code: 200, headers {
"Access-Control-Allow-Credentials" = true;
"Access-Control-Allow-Origin" = "*";
"Access-Control-Expose-Headers" = "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval";
"Cache-Control" = "public, max-age=60, s-maxage=60";
"Content-Encoding" = gzip;
"Content-Security-Policy" = "default-src 'none'";
"Content-Type" = "application/json; charset=utf-8";
Date = "Tue, 07 Jul 2015 00:46:53 GMT";
Etag = "W/\"e1a6465809efe351293dd5bda041a795\"";

我很困惑。

如果 Etag 保持不变,响应状态应该是 304,但是每次我请求我都会得到 200,即使结果没有变化。

我认为问题可能是由 swift 中的引用表示引起的,有人可以帮助我吗?

注意事项

问题出在我的github repo GitPocket ,希望有人可以直接在 repo 中帮助我!!你可以通过 ctrl + F problem here

找到问题

最佳答案

尝试使用 Alamofire 后,我能够修复它。我使用了以下请求

let URL = NSURL(string: "https://api.github.com/users/jindulys/received_events")!
let mutableURLRequest = NSMutableURLRequest(URL: URL)
mutableURLRequest.HTTPMethod = "GET"

//let parameters = ["foo": "bar"]
mutableURLRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
mutableURLRequest.setValue("\"ae651e23bd54274b1c046e7b804feeb7\"", forHTTPHeaderField: "If-None-Match")

return Alamofire.request(mutableURLRequest)

我认为这个问题只存在于iOS 9.0,我认为是iOS 9.0 SDK的问题。

关于swift - 如何将引号(“)包含到 Swift 中 HTTP Head 字段使用的字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31258243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com