Java 使用spring framework twitter API发布推文时损坏的图像
我正试图使用Spring框架的TwitterAPI从JavaTomcat服务器发布一条带有嵌入图像的推文。该图像是一个在线托管的JPG(通过Amazon Cloudfront CDN)。我尝试在下面的代码段中使用UpdateWebet函数发布:Java 使用spring framework twitter API发布推文时损坏的图像,java,spring,twitter,Java,Spring,Twitter,我正试图使用Spring框架的TwitterAPI从JavaTomcat服务器发布一条带有嵌入图像的推文。该图像是一个在线托管的JPG(通过Amazon Cloudfront CDN)。我尝试在下面的代码段中使用UpdateWebet函数发布: 导入org.springframework.social.twitter.api.TweetData; 导入org.springframework.social.twitter.api.TwitterProfile; 导入org.springframew
导入org.springframework.social.twitter.api.TweetData;
导入org.springframework.social.twitter.api.TwitterProfile;
导入org.springframework.social.twitter.api.Tweet;
导入org.springframework.social.twitter.api.impl.twitter模板;
// ...
public Tweet UpdateWeet(String accessToken、String accessTokenSecret、String tweetMessage、String imageUrl){
TwitterTemplate twitter=新的TwitterTemplate(twitterConsumerKey、TwitterConsumerCret、accessToken、accessTokenSecret);
setRequestFactory(twitterHttpRequestFactory);
TweetData TweetData=新的TweetData(tweetMessage);
试一试{
URLROURCE IMAGEURLROURCE=新的URLROURCE(imageUrl);
info(“试图用url{}内容长度{}”、imageUrl、imageUrlResource.contentLength()推特图像);
tweetData=tweetData.withMedia(imageUrlResource);
}捕获(格式错误){
logger.error(“tweet图像的url格式错误:{}”,imageUrl);
}捕获(IOE异常){
logger.error(“tweet图像的IOException{}\n{}”,imageUrl,e);
}
返回twitter.timelineOperations().updateStatus(tweetData);
}
tweet发布到我的用户的时间线,并且确实包含了一个尺寸正确的JPG图像(640x640,与源图像一样)-但是,实际的图像数据被破坏了!下面是一个损坏图像的示例,该图像最终出现在我的twitter时间线上:
我的第一个想法是图像数据被截断了。但是,我已经通过上面代码示例中的logger.info行确认,指向图像的URLResource报告的内容长度与原始图像的文件大小匹配
我不确定为什么这段代码会将损坏的图像数据发送到twitter。我已经搜索了使用Spring框架中的TweetData.withMedia功能将图像发布到twitter的工作示例,但我没有找到一个。您没有指定您使用的是哪个版本的
Spring社交twitter
,但希望您会发现这很有用。根据您对TweetData
类的使用情况,您的代码表明您正在使用1.1.0.M4或更高版本
我最近发现我的应用程序也有同样的问题。它发生在我从springsocialtwitter
1.0.3.RELEASE“升级”到1.1.0.M4之后的某个时候。在我恢复到1.0.3.RELEASE之后,问题得到了解决。恢复到1.1.0.M3也可以解决此问题
Spring Social Twitter的Jira数据库中记录了该漏洞:
如果你恢复到一个不太坏的版本,你将不得不停止使用TweetData
。以下是方法:
TweetData tweetData = new TweetData(caption).withMedia(image);
timelineOperations.updateStatus(tweetData);
变成
timelineOperations.updateStatus(caption, image);
祝你好运 问题被标记为已修复,我仍在RC1版本上遇到损坏的映像。一切正常吗?不是很有希望“恢复到一个不太坏的版本”;-)你知道他们的javadocs是否有一个版本,里面有一些实际的注释和方法描述吗?