gpt4 book ai didi

ios - HTTPBody - Swift POST 请求 - 推特

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

我正在尝试向 Twitter API 发送 POST 请求以获取 bearer_token 作为仅应用程序身份验证的一部分。我已经按照他们的文档 ( https://dev.twitter.com/oauth/application-only ) 对 URL 进行了编码,并通过我的消费者 key 和消费者 secret 进行了连接。然后我将其放入一个名为 auth_string 的字符串中,您将在请求中看到它。我还按照文档将静态 header 值添加到请求中。问题是将 HTTPBody 作为“grant_type=client_credentials”传递(Twitter 在文档中要求的方式)。

我为此尝试了三种方法:

  1. 我尝试将其作为字符串传递,但没有成功,构建失败,因为我想我无法将该类型传递给 HTTPBody。
  2. 我尝试在发送请求之前将字符串转换为 NSData,如下所示:Creating NSData from NSString in Swift - 但这似乎也不起作用 - 当我将该 NSData 变量打印到控制台时,它看起来像这样:“httpbody: Optional(<6772616e 745f7479 70653d63 6c69656e 745f6372 6564656e 7469616c 73>)”,当我打印请求时在制作它之前,我什至在正文中看不到任何东西——只看到我之前设置的标题字段。
  3. 我试着用这种方法制作一个 NSDictionary 对象:http://jamesonquave.com/blog/making-a-post-request-in-swift/#jumpSwift但是在发送请求之前我还是看不到请求中的正确正文,并且我没有从 Twitter 端点获得正确的响应。

非常感谢任何提示!下面的代码显示了我上面列出的第二种方法。

//auth_string is used as authorization field in header of http request
let auth_string:NSString = "Basic \(key_sec_base64)"

let http_body = "grant_type=client_credentials".dataUsingEncoding(NSUTF8StringEncoding)

var bearer_token_request = NSMutableURLRequest(URL: NSURL(string: "https://api.twitter.com/oauth2/token"))
var bearer_token_session = NSURLSession.sharedSession()
bearer_token_request.HTTPMethod = "POST"

var err: NSError?

bearer_token_request.addValue("application/x-www-form-urlencoded;charset=UTF-8", forHTTPHeaderField: "Content-Type")
bearer_token_request.addValue((auth_string), forHTTPHeaderField: "Authorization")
bearer_token_request.addValue("gzip", forHTTPHeaderField: "Accept-encoding")
bearer_token_request.addValue("api.twitter.com", forHTTPHeaderField: "Host")
bearer_token_request.HTTPBody = http_body

println("httpbody: \(bearer_token_request.HTTPBody)")

println(bearer_token_request)

let task = bearer_token_session.dataTaskWithRequest(bearer_token_request, completionHandler: {(data, response, error) in
println(data)

})

task.resume()

最佳答案

when I print that NSData variable to the console it looks like this: "httpbody: Optional(<6772616e 745f7479 70653d63 6c69656e 745f6372 6564656e 7469616c 73>)",

因为是可选类型:类型是Optional<NSData>

如果你这样做 println(data!) , 它会去掉 Optional<>部分。

然后您可能需要转换 data返回string按照您的预期查看数据(“grant_type=client_credentials”)

关于ios - HTTPBody - Swift POST 请求 - 推特,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26319102/

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