Twitter API - невозможно обновить статус, содержащий круглые скобки

Я пытаюсь использовать Twitter API для твитов с использованием токена доступа. Когда я использую API для публикации статуса типа «Привет, ребята», это удается, и я вижу твит на своей временной шкале, но когда я публикую «Привет, ребята :)», я получаю следующий ответ:

{errors=[{code=32, message=Could not authenticate you.}]}

Вот успешно выполненный запрос (отправка «привет, ребята»):

 client.target("https://api.twitter.com/1.1/statuses/update.json")
.queryParam("status", "hey%20guys")
.request()
.post(javax.ws.rs.client.Entity.text("sdfsdf"))
.readEntity(Object.class);

Вот запрос, который не работает (отправка «привет, ребята :)»):

 client.target("https://api.twitter.com/1.1/statuses/update.json")
.queryParam("status", "hey%20guys%20%3A)")
.request()
.post(javax.ws.rs.client.Entity.text("sdfsdf"))
.readEntity(Object.class);

Для кодирования текста я использовал http://meyerweb.com/eric/tools/dencoder/

Для отправки запросов с использованием API я использую javax.ws.rs.client.Client.

Я также пытался найти какие-либо ссылки в документации Twitter API по этой проблеме. но не нашел ничего связанного. Их API содержит пример для публикации, но я также могу опубликовать его.


person Eyal    schedule 23.03.2015    source источник
comment
Вы пробовали кодировать скобки? %29   -  person Nigel Angel    schedule 23.03.2015
comment
Спасибо, это было дело ... это странно, так как я пробовал 3 разных онлайн-кодирования URL-адресов, и все они сохраняли скобки на месте.   -  person Eyal    schedule 24.03.2015


Ответы (1)


Если вы закодируете скобки, это исправит это.

status = status.replaceAll("\\(","%28").replaceAll("\\)","%29"); 

client.target("https://api.twitter.com/1.1/statuses/update.json")
.queryParam("status", status)
.request()
...
person Nigel Angel    schedule 24.03.2015