- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个调用twitter搜索API的函数(使用dghubble/go-twitter)
但是,当我尝试从该API读取响应时,我得到了http2: response body closed
这是我的代码:
func SearchTweets(query string) string {
config := oauth1.NewConfig("consumer_key", "consumer_secret")
token := oauth1.NewToken("access_token", "token_secret")
httpClient := config.Client(oauth1.NoContext, token)
// Twitter client
client := twitter.NewClient(httpClient)
// Search Tweets
_ , resp, err := client.Search.Tweets(&twitter.SearchTweetParams{
Query: "elon",
Count: 50,
})
if err != nil {
return err.Error()
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return err.Error()
}
return string(body)
}
最佳答案
此答复中引用的行号和文件是在回答之日记录的,因此不能保证它们永远正确无误。
在dghubble's go-twitter search.go的第62行中,您正在调用的client.Search.Tweets()
函数:
resp, err := s.sling.New().Get("tweets.json").QueryStruct(params).Receive(search, apiError)
请注意,它使用
sling
包构造和发送http请求,以及接收和解析http(JSON)响应。它所引用的
sling
包可以在
here中找到。
Request()
行上找到的
280
函数仅根据
*http.Request
对象的属性构造一个
Sling
。它返回所述请求以及错误(签名为
func (s *Sling) Request() (*http.Request, error)
)
Do()
函数是关键部分。它执行作为第一个参数传递的http请求,尝试将(JSON)响应解析为提供的第二个参数(一个interface {},它应指向您希望将响应解析为的对象),并同时尝试解析提供给第三个参数的任何错误。毕竟,它
关闭了响应主体。 具体来说,注意第385和386行:
// when err is nil, resp contains a non-nil resp.Body which must be closed
defer resp.Body.Close()
换句话说,响应主体在它进入go-twitter
Tweets()
范围之前就已关闭,因此您肯定无法最终读取该主体。毕竟,这些库的要点是为您省去了读取和解析响应正文等内容的麻烦。
Tweets()
函数具有以下签名:
func (s *SearchService) Tweets(params *SearchTweetParams) (*Search, *http.Response, error)
。请注意,第一个返回值的类型为
*Search
。这是从
Receive()
以及
Do()
函数读取的对象。它应该在关闭之前保存
*http.Response
主体中的所有信息:
search , resp, err := client.Search.Tweets(&twitter.SearchTweetParams{
Query: "elon",
Count: 50,
})
search
对象的类型为
*Search
,其定义可以在
here中找到。它包括状态的一部分(
Tweet
结构)以及一些元数据。您还可能会发现
here,这对
Tweet
结构的定义很有帮助。
go-twitter
和
sling
库的目的。您可以在
sling
的基础上构建一些请求,但它不是很漂亮(实际上,从头开始构建请求也可能更干净)。不过,这是一个(未经测试的)示例,它是通过引用本文前面提到的链接以及
this one编写的代码:
func MyTweetsFunc(httpClient *http.Client, requestBuilder *sling.Sling, params *twitter.SearchTweetParams)
{
// Use sling's Request() to construct the request, just as Receive() does
req, err := requestBuilder.New().Get("tweets.json").QueryStruct(params).Request()
if err != nil {
// handle the error
}
// Get the response through the httpClient, since a sling client would parse and close the body automatically.
resp, err := httpClient.Do(req)
if err != nil {
// handle the error
}
// Now you can do whatever you want with resp, which is simply an *http.Response. Its body is open for reading.
}
requestBuilder
可以这样构造:
const twitterAPI = "https://api.twitter.com/1.1/"
requestBuilder := sling.New().Client(httpClient).Base(twitterAPI)
您通常将
httpClient
传递给
twitter.NewClient()
的客户端
关于api - 从Twitter客户端读取响应返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63267744/
用户使用 oauth 登录我的应用程序,注销我的应用程序后,但 twitter 无法执行,问题是用户 twitter 帐户处于事件状态。 当注销我的应用程序的同时注销 Twitter twitter
我在 Twitter 的文本查询字符串参数方面遇到了一些字符编码问题。 a) http://www.twitter.com/share?url=http://www.example.com&text=
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我正在尝试执行3-legged authorization来在浏览器中调用Twitter API。该过程首先通过将签名的请求发布到 /oauth/request_token 来获得请求 token (
我正在做一个项目来识别用户是否是 Twitter 中的名人。有什么方法可以检查 Twitter 中的用户是否被验证为名人?我知道名人会在推特个人资料中用蓝色徽章来识别。但是我如何通过 Twitter
我想对推文进行一些挖掘。是否有更具体的推文停用词列表,例如删除“lol”和其他推特笑脸? 最佳答案 我想你应该合并普通的停用词列表,例如 this one或that ,带有特定的首字母缩略词词典,例如
我正在为我的期末项目建立一个网站,用于查找和显示 Twitter 上当前 HitTest 门的主题。有谁知道如何从上周或一天内的大量推文中提取主题?我还想知道如何在 http://tweet3d.co
我可以使用获取所有用户的详细信息 https://api.twitter.com/1/account/verify_credentials.json 但我只想通过使用 api 获取 ID 如何获得它。
我见过多个“允许此应用程序与 twitter 一起运行”的内容,但没有一个: 查看您的 Twitter 密码 在“此应用程序将能够”下 示例: 最佳答案 没有 Twitter 永远不会允许人们看到您的
我注意到最近的一些推文有与之相关的媒体,例如来自 TwitPic 或 Flickr 的照片以及来自 Youtube 的视频。你可以直接在 Twitter 网站上看到它们,所以它不仅仅是一个链接。我的想
在 Twitter API 中,有一个 status_lookup 方法可以“水化”推文。文档不清楚这意味着什么。那么我什么时候需要补充推文呢? 如果我有来自 /statuses/user_timel
我使用以下代码来显示一个带有已填充消息的 Twitter 框的页面: Click me 但是,在页面上,我在 Twitter 框中得到了这个: myMessage/ 注意结尾的斜杠。有什么想法可以解决
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
在开发包含 Twitter 客户端的 iOS 应用程序时,我必须允许用户生成主题标签(可以在应用程序内的其他位置创建,而不仅仅是在推文正文中创建)。 我想确保任何此类主题标签对于 Twitter 都有
我是集群新手,之前刚刚实现了一些算法。我需要根据推文的相似性对推文进行聚类。一种方法是仅使用哈希标签,但我认为这不会提供那么多信息。因此应该分析完整的推文。 此外,我还在网上搜索聚类提要的算法。 我遇
我想在 ios 7 中集成 twitter 并希望实现以下功能。1. 从 iOS 应用程序使用 Twitter 登录。2. 获取用户资料信息 我尝试了几个解决方案,但没有一个对我有用。请帮忙。 最佳答
是否有任何方法可以使用用户 ID 或屏幕名称构建个人资料图像 URL?我将用户 ID 存储在数据库中,但我不想存储个人资料图像 url。 编辑: 我也不想进行 api 调用。我想将 user_id 放
在 iOS5 上,是否可以提示用户并将其引导至 Twitter Settings.app 区域,以便他们可以将自己的 Twitter 帐户添加到手机中?如果是,你是怎么做到的? 作为解决方法,我可以指
有许多网站为 Twitter 提供附加服务: hashtags.org tweetmeme.com repeets.com dailyrt.com backtweets.com 他们都有一个共同点:他
我正在使用 Twitter Bootstrap 并尝试使用背景打印页面。 我尝试了网络浏览器中的所有选项,但它不起作用。 如果我不包括 twitter bootstrap,则背景的打印效果很好。 (顺
我是一名优秀的程序员,十分优秀!