Подтвердить что ты не робот

API-интерфейс для обмена стеками

Я попытался перекрыть вопрос stackoverflow с обменом стекю api и не смог. Я много пробовал, но у меня не получилось работать.

URL:

http://api.stackexchange.com/2.2/info/35007869/upvote

Docs

https://api.stackexchange.com/docs/upvote-question

Данные Json:

{
  "key" : "my key",
  "access_token" : "my token",
  "site" : "stackoverflow.com",
  "preview" : "false",
  "filter": "default"
}

Я пробовал через скрипач со следующими параметрами.

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. Поэтому любая помощь будет очень заметной.

Обновление

Во время попытки этого в скрипачке я получил следующее сообщение.

введите описание изображения здесь

4b9b3361

Ответ 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', '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/

Ответ 2

Вы должны отправить параметры как аргументы URL, а не как сырые JSON на тело запроса. Чтобы выполнить повышение, отправьте следующий запрос POST:

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

Ответ 3

Ваши данные Json Должны быть отправлены как это, это не позволяет следующую строку

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