При отправке URL-адреса автоматической отправки через API REST V2 с этим запросом
POST https://api.flattr.com/rest/v2/flattr {"url":"https://flattr.com/submit/auto?user_id=myuserid&url=myurl"}
Я получаю эту ошибку, хотя URL-адрес работает нормально в любом браузере и перенаправляет на существующую вещь.
{ "error_description" : "The requested thing(s) could not be found", "error_uri" : "http:\/\/developers.flattr.net\/api", "error" : "not_found" }
Значит или я что-то делаю не так, или сообщение об ошибке не так, или что-то еще?
Возможно, у вас проблема с кодировкой URL.Чтобы это работало, вам нужно сначала закодировать URL для автоматической отправки URL.
http://blog.flattr.net/2011/10/api-v2-beta-out-whats-changed/ становится http%3A%2F%2Fblog.flattr.net%2F2011%2F10%2Fapi-v2-beta-out-whats-changed%2F
http://blog.flattr.net/2011/10/api-v2-beta-out-whats-changed/
http%3A%2F%2Fblog.flattr.net%2F2011%2F10%2Fapi-v2-beta-out-whats-changed%2F
Затем вам нужно кодировать URL-адрес всего URL-адреса автоматической отправки, если вы хотите отправить его как обычный запрос POST.
http://flattr.com/submit/auto?url=http%3A%2F%2Fblog.flattr.net%2F2011%2F10%2Fapi-v2-beta-out-whats-changed%2F&user_id=flattrстановится http%3A%2F%2Fflattr.com%2Fsubmit%2Fauto%3Furl%3Dhttp%253A%252F%252Fblog.flattr.net%252F2011%252F10%252Fapi-v2-beta-out-whats-changed%252F%26user_id%3Dflattr.
http://flattr.com/submit/auto?url=http%3A%2F%2Fblog.flattr.net%2F2011%2F10%2Fapi-v2-beta-out-whats-changed%2F&user_id=flattr
http%3A%2F%2Fflattr.com%2Fsubmit%2Fauto%3Furl%3Dhttp%253A%252F%252Fblog.flattr.net%252F2011%252F10%252Fapi-v2-beta-out-whats-changed%252F%26user_id%3Dflattr
Если вы собираетесь отправлять его с JSON, вам не нужно кодировать URL-адрес автоматической отправки URL-адреса flattr.Вместо этого вам нравится пример, приведенный ниже.
{"url":"http://flattr.com/submit/auto?url=http%3A%2F%2Fblog.flattr.net%2F2011%2F10%2Fapi-v2-beta-out-whats-changed%2F&user_id=flattr"}
Это означает, что часть URL-адреса будет закодирована URL-адресом два раза, если вы выполните обычный запрос POST и отправите данныетак как JSON URL кодируют только один раз.И когда вы выполняете POST-запрос с телом JSON, вам нужно установить Content-Type в application/json, чтобы он работал.
Content-Type
application/json
Я забыл установить заголовок Content-type для запроса.Надо сказать "application / json".