twitter4j在android中发送带文本的图像时达到最大长度

时间:2013-10-23 08:27:00

标签: android twitter

我使用twitter4j在Android中发布包含图片和文字的推文。我的文本被截断到不到140.但我想知道为什么服务器响应超过140个字符例外 这是我的尝试:

 message = trimTweet(message); // guaranteed max length is less than 140
 StatusUpdate status = new StatusUpdate(message);

    if(bitmapUri != null){
    status.setMedia(new File(getRealPathFromURI(getApplicationContext(), bitmapUri)));
    }

  twitter.updateStatus(status);

服务器响应:

  10-23 19:18:00.842: E//NewsActivity.java:280(25288):  
  TwitterException{exceptionCode=[b2b52c28-11aaaacd], statusCode=403, 
  message=Status is over 140 characters., code=186, retryAfter=-1, 
  rateLimitStatus=null, version=3.0.4}
  10-23 19:18:00.842: E//NewsDetailActivity.java:280(25288):    at  twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:162)
 10-23 19:18:00.842: E//NewsDetailActivity.java:280(25288):     at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
 10-23 19:18:00.842: E//NewsDetailActivity.java:280(25288):     at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:98)

从调试中,我可以看到我的推文消息少于140个字符(有时是138或139)。但是当我尝试只发送108或110个字符时,它就发送了成功。然后我想知道twitter4j将我的图片添加到推文文本中。是对的吗?
如何发送只有140个字符的图像和文字?

2 个答案:

答案 0 :(得分:18)

最后我弄明白了我的问题。添加网址或图片时,Twitter会将字符限制为118.我认为这听起来很愚蠢。从此链接:http://mediacause.org/10-nonprofit-twitter-tips-140-characters/

  

我们都会因为限制140个字符而被绊倒(它   听起来很多,直到你开始输入)。添加链接或照片,   并且随附文本的字符数减少到118。   在制作推文并包含获得的文字时,请记住这一点   直截了当

更新:感谢@Aggressor,现在Twitter更新的限制链接取决于获取t.co的网址。
https窃取了23个字符(它是21个),所以你只有117个字符用于文本 对于非https网址,您有118个字符(包装网址为22)。

<强>的Https
enter image description here

<强> HTTP
enter image description here

答案 1 :(得分:0)

我从Twitter文档中发现,虽然推文仍然限制在140个字符之内,但字符计数模型随着时间的推移而发展。推文是UTF-8字符串内容,任何UTF-8字符都算作单个字符。被理解为链接的字符串,例如“http://twitter.com”,“twitter.com”,“twitter.com/twitterapi”将自动转换为t.co. t.co链接表示变体字符计数(对于基于HTTP的链接当前为“22”,对于基于HTTPS的链接为“23”)。有关t.co如何在字符计数中发挥作用的更多信息,请参阅How Twitter wraps URLs with t.coCounting Characters提供了有关字符统计策略的更多详细信息。

使用GET help/configuration以编程方式跟踪t.co包装长度。字段“short_url_length”和“short_url_length_https”将指示当前长度。