将没有元数据的照片上传到Picasa网络相册时出现错误(返回403 Forbidden)。 (备注:使用OAuth2.0,“userId”不是gmail地址[数字ID]) 我不知道场合。 任何人请技术支持 感谢
public String setdData(Context context, String filePath, String userId, String albumId, String accessToken) {
// new ImageUploader(context, filePath, filePath).run();
String url = "https://picasaweb.google.com/data/feed/api/user/" + userId + "/albumid/"
+ albumId;
HttpClient httpClient = new DefaultHttpClient();
File file = new File(filePath);
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("GData-Version", "2");
// httpPost.addHeader("MIME-version", "1.0");
httpPost.setHeader("Content-type", "image/jpeg");
httpPost.setHeader("Slug", "plz-to-love-realcat.jpg");
// httpPost.addHeader("Content-Length", String.valueOf(file.length()));
httpPost.setHeader("Authorization", "GoogleLogin auth=" + accessToken);
// httpPost.setHeader("Authorization", "OAuth " + accessToken);
InputStreamEntity reqEntity;
org.apache.http.HttpResponse response;
try {
reqEntity = new InputStreamEntity(new FileInputStream(file), file.length());
String CONTENTTYPE_BINARY = "binary/octet-stream";
reqEntity.setContentType(CONTENTTYPE_BINARY);
reqEntity.setChunked(true);
httpPost.setEntity(reqEntity);
response = httpClient.execute(httpPost);
Log.d("Picasa Upload", "STATUS CODE : " + response.getStatusLine().getStatusCode());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 0 :(得分:1)
我假设你的accessToken不是空的......
这是我的代码,它适用于我:
public boolean setdData(Context context, String filePath, String userId, String albumId, String accessToken) {
boolean success = false;
Bitmap bitmap = BitmapFactory.decodeFile(filePath);
if (bitmap != null) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 87, baos);
byte[] data = baos.toByteArray();
ByteArrayInputStream inputStream = new ByteArrayInputStream(data);
HttpRequestFactory requestFactory = new NetHttpTransport().createRequestFactory();
InputStreamContent content = new InputStreamContent("image/jpeg", inputStream);
HttpRequest request = requestFactory.buildPostRequest(new genericUrl("https://picasaweb.google.com/data/feed/api/user/"+userId+"/"+albumId+"/default"), content);
GoogleHeaders headers = new GoogleHeaders();
String fileName = "Whatever...";
headers.setSlugFromFileName(fileName);
headers.setAuthorization("OAuth " + accessToken);
request.setHeaders(headers);
request.execute().ignore();
// Success!
success = true
} catch (IOException e) {
}
}
return success;
}
要使此代码有效,您需要包含一些库 我用过这些:
谷歌-HTTP-客户1.10.2-beta.jar
谷歌的API客户端-1.10.2-beta.jar
谷歌-OAuth的客户端1.10.0-beta.jar
jsr305-1.3.9.jar
guava-11.0.1.jar
你可以在这里找到它们:
http://code.google.com/p/google-api-java-client/downloads/detail?name=google-api-java-client-1.10.2-beta.zip