Search code examples
javahttpposthttprequestpicasa

How to build a http post request with the correct entity with Java and not using any library?


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?


Solution

  • 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();
    }