使用堆栈交换API

时间:2016-01-26 20:06:46

标签: java php android json stackexchange-api

我试图用堆栈交换api upvote stackoverflow问题并且失败了。我已经尝试了很多,但我没有让它发挥作用。

网址:

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" : "stackoverflow.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对象中提供了该站点。所以任何帮助都会非常明显。

更新

在小提琴手中尝试这个时,我得到了以下信息。

enter image description here

3 个答案:

答案 0 :(得分:4)

您需要将它们作为表单数据发送,使用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', 'stackoverflow.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/

答案 1 :(得分:1)

您必须将参数作为URL参数发送,而不是作为请求正文上的原始JSON发送。 要执行upvote,请发送以下POST请求:

http://api.stackexchange.com/2.2/questions/35007869/upvote?site=stackoverflow.com&key=YOUR_KEY&access_token=YOUR_TOKEN&preview=false&filter=default

答案 2 :(得分:0)

您的Json数据应该像这样发送,它不允许下一行

{"key":"mykey","access_token":"mytoken","site":"stackoverflow.com","preview":"false","filter":"default"}