解决statuses/update_with_media出现{"message":"Internal error","code":"131"}问题


#1

对于这个问题官方文档也没有相关描述,网上文章更是少,只有提问没有回答的。我花了一个晚上和一个上午的时间终于找到问题的所在了,主要是HTTP Body里面出现了问题,由于在构造muliti-part结构时起始的boundary多了个\r\n。然后其实每个需要上传的图片附件都需要指定多一个属性:Content-Transfer-Encoding。如果没有这个属性是绝对会报错的,那么官方提供的例子其实可以写成下面形式就不会造成不必要的问题:

POST /1.1/statuses/update_with_media.json HTTP/1.1
Host: api.twitter.com
User-Agent: Go http package
Content-Length: 15532
Authorization: OAuth oauth_consumer_key="...", oauth_nonce="...", oauth_signature="...", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1347058301", oauth_token="...", oauth_version="1.0"
Content-Type: multipart/form-data;boundary=cce6735153bf14e47e999e68bb183e70a1fa7fc89722fc1efdf03a917340
Accept-Encoding: gzip
 
--cce6735153bf14e47e999e68bb183e70a1fa7fc89722fc1efdf03a917340
Content-Disposition: form-data; name="status"
 
Hello 2012-09-07 15:51:41.375247 -0700 PDT!
--cce6735153bf14e47e999e68bb183e70a1fa7fc89722fc1efdf03a917340
Content-Type: application/octet-stream
Content-Disposition: form-data; name="media[]"; filename="media.png"
Content-Transfer-Encoding: binary

...
--cce6735153bf14e47e999e68bb183e70a1fa7fc89722fc1efdf03a917340--

希望对大家有所帮助,:slight_smile: