使用堆栈交换 API
Posted
技术标签:
【中文标题】使用堆栈交换 API【英文标题】:Consuming stack exchange API 【发布时间】:2016-05-03 13:13:43 【问题描述】:我曾尝试 对堆栈溢出问题进行投票,但失败了。我已经尝试了很多,但我没有得到它的工作。
网址:
http://api.stackexchange.com/2.2/questions/35007869/upvote
文档
https://api.stackexchange.com/docs/upvote-question
Json 数据:
"key" : "my key",
"access_token" : "my token",
"site" : "***.com",
"preview" : "false",
"filter": "default"
我通过 fiddler 尝试了以下参数。
User-Agent: Fiddler
Host: api.stackexchange.com
Content-Length: 159
Content-Type: application/json; charset=utf-8
还有POST
方法。但是我失败了以下错误消息。
error_id=400
error_message=site is required
error_name=bad_parameter
但我已经在我的 JSON 对象中提供了该站点。因此,任何帮助都将是非常可观的。
更新
在 fiddler 中尝试此操作时,我收到以下消息。
【问题讨论】:
有什么代码可以试试吗?也检查一下:***.com/a/29945301/4409113 其他请求有没有成功? @Alexandr 没有。还没有得到答案。 你读过这个吗? api.stackexchange.com/docs/write @Empty2k12 是的,我已经阅读并创建了应用程序。 【参考方案1】:您需要将它们作为表单数据发送,使用 javascript 会是这样的:
var request = new XMLHttpRequest();
request.open('POST', 'http://api.stackexchange.com/2.2/questions/35007869/upvote', true);
var formData = new FormData();
formData.append('key', 'my key');
formData.append('access_token', 'my token');
formData.append('site', '***.com');
formData.append('preview', 'false');
formData.append('filter', 'default');
request.send(formData);
以下是使用 android 的指南:http://www.onlymobilepro.com/2013/03/16/submitting-android-form-data-via-post-method/
【讨论】:
你能发布一些应该在提琴手中工作的例子吗?因为我想在开始代码之前确认 API 工作正常。【参考方案2】:你的 Json 数据应该这样发送,不允许下一行
"key":"mykey","access_token":"mytoken","site":"***.com","preview":"false","filter":"default"
【讨论】:
【参考方案3】:您必须将参数作为 URL 参数发送,而不是作为请求正文上的原始 JSON。 要进行投票,请发送以下 POST 请求:
http://api.stackexchange.com/2.2/questions/35007869/upvote?site=***.com&key=YOUR_KEY&access_token=YOUR_TOKEN&preview=false&filter=default
【讨论】:
我在尝试这个POST methods expects all parameters to be submitted as a form, not on the query string
时遇到以下错误@
它说不在查询字符串上,你再次在查询字符串上传递所有参数。以上是关于使用堆栈交换 API的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有隐式锁定最新的64位Intel CPU的情况下用寄存器交换堆栈顶部?
lwip 堆栈 netconn api 保持连接“保持活动”