How should I build the entity to achieve this post request?
POST https://picasaweb.google.com/data/feed/api/user/userID/albumid/albumID/photoid/photoID
<entry xmlns='http://www.w3.org/2005/Atom'>
<content>great photo!</content>
<category scheme="http://schemas.google.com/g/2005#kind"
term="http://schemas.google.com/photos/2007#comment"/>
</entry>
It's from: http://code.google.com/intl/zh-TW/apis/picasaweb/docs/2.0/developers_guide_protocol.html#AddComments
Could someone provide an example or any tips? Many thanks.
UPDATE: I added my code here:
List<Header> headers = new ArrayList<Header>();
headers.add(new BasicHeader("GData-Version", "2"));
headers.add(new BasicHeader("Authorization", "GoogleLogin auth=" + mAuthToken));
EntityTemplate entity = new EntityTemplate(new ContentProducer() {
public void writeTo(OutputStream ostream) throws IOException {
Writer writer = new OutputStreamWriter(ostream, "UTF-8");
writer.write("\r\n");
writer.write("<entry xmlns='http://www.w3.org/2005/Atom'>");
writer.write("<content>" + comment + "</content>");
writer.write("<category scheme=\"http://schemas.google.com/g/2005#kind\"\r\n");
writer.write("term=\"http://schemas.google.com/photos/2007#comment\"/>");
writer.write("</entry>\r\n");
writer.flush();
}
});
Still no luck. Any idea?
It is a sample code using HttpClient.
I hope this piece of information will be of help to you.
// yourID
String userID = "";
String albumID = "";
String photoID = "";
HttpPost postRequest = new HttpPost(
"https://picasaweb.google.com/data/feed/api/user/" + userID
+ "/albumid/" + albumID + "/photoid/" + photoID);
postRequest.addHeader(new BasicHeader("GData-Version", "2.0"));
postRequest.addHeader(new BasicHeader("Authorization",
"GoogleLogin auth=" + mAuthToken));
String content =
"<entry xmlns='http://www.w3.org/2005/Atom'>"
+ "<content>" + comment + "</content>"
+ "<category scheme='http://schemas.google.com/g/2005#kind'"
+ " term='http://schemas.google.com/photos/2007#comment'/>"
+ "</entry>";
try {
StringEntity entity = new StringEntity(content);
entity.setContentType(new BasicHeader("Content-Type",
"application/atom+xml"));
postRequest.setEntity(entity);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(postRequest);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
You can use "GDataAPI" and "Guava-libraries".
PicasawebService myService
= new PicasawebService("exampleCo-exampleApp-1"); // just id
myService.setUserCredentials(
"liz@gmail.com", "mypassword"); // your mailaddress, password
// change "username", "albumid" and "photoid"
URL feedUrl = new URL(
"https://picasaweb.google.com/data/feed/api/"
+ "user/username/albumid/albumid/photoid/photoid");
CommentEntry myComment = new CommentEntry();
myComment.setContent(
new PlainTextConstruct("great photo!")); // there is comment
myService.insert(feedUrl, myComment);
Refere to following URL.
You can use HttpClient from apache httpcomponents to create http requests.
Find the tutorials here.
来源:https://stackoverflow.com/questions/5101817/how-to-build-a-http-post-request-with-the-correct-entity-with-java-and-not-using