使用堆栈交换 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的主要内容,如果未能解决你的问题,请参考以下文章

使用windows api堆栈跟踪另一个进程c

lua C API

如何在没有隐式锁定最新的64位Intel CPU的情况下用寄存器交换堆栈顶部?

lwip 堆栈 netconn api 保持连接“保持活动”

如何使用适用于 iOS 的 swift 3 连接到 MEAN 堆栈 REST api

如何在汇编中使用堆栈对数组进行排序