我尝试使用Scribe Library将照片上传到Flickr,但我不知道如何在Java中使用MultipartEntity(我是JAVA的新手)。 Flickr的响应是:code = 93,POST请求太大。
这是我的代码,请指导我正确的方向。
Bundle extras = data.getExtras();
Bitmap pic = extras.getParcelable("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
stream.toByteArray();
pic.compress(Bitmap.CompressFormat.JPEG, 100, stream);
imageView.setImageBitmap(pic);
final OAuthService service = new ServiceBuilder()
.provider(FlickrApi.class)
.apiKey(APIKEY)
.apiSecret(APISECRET).callback(CALLBACK)
.build();
OAuthRequest request = new OAuthRequest(Verb.POST, "http://api.flickr.com/services/upload/");
byte[] img = stream.toByteArray();
MultipartEntity entity = new MultipartEntity();
ContentBody body= new ByteArrayBody(stream.toByteArray(),"pic.jpg");
entity.addPart("photo",body);
request.addPayload(img);
request.addHeader(entity.getContentType().getName(), entity.getContentType().getValue());
service.signRequest(accessToken, request);
Response response = request.send();
String rbody=response.getBody();
答案 0 :(得分:0)
来自Flickr的API文档(http://www.flickr.com/services/api/upload.api.html)
请注意'照片'参数不应包含在签名中。生成签名时应包含所有其他POST参数。
但在您的代码中,您甚至使用了"照片"生成签名时的一部分。 尝试生成没有"照片的签名"部分和签署请求后添加"照片"参数。
当Flickr尝试验证签名并发现签名超出其允许的最大长度时,可能会导致Flickr报告的错误。