Как создать почтовый запрос http с правильным объектом с помощью Java и без использования какой-либо библиотеки?

Как мне создать объект для выполнения этого почтового запроса?

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>

Это из: http://code.google.com/intl/zh-TW/apis/picasaweb/docs/2.0/developers_guide_protocol.html#AddComments

Может ли кто-нибудь привести пример или какие-либо советы? Большое спасибо.

ОБНОВЛЕНИЕ: я добавил свой код здесь:

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

Все равно не повезло. Есть идеи?


person shiami    schedule 24.02.2011    source источник


Ответы (3)


Это пример кода с использованием HttpClient.

Я надеюсь, что эта часть информации поможет вам.

// 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();
}
person Yu Sun corn    schedule 02.03.2011
comment
Спасибо! Я думаю, что я не правильно установил тип контента. Это действительно полезно, поскольку документ не указывает на эту важную часть. - person shiami; 03.03.2011

Вы можете использовать "GDataAPI" и "Guava-библиотеки".

PicasawebService myService
    = new PicasawebService("exampleCo-exampleApp-1"); // just id
myService.setUserCredentials(
    "[email protected]", "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);

См. следующий URL.

  1. http://code.google.com/intl/ja/apis/picasaweb/docs/2.0/developers_guide_java.html
  2. http://code.google.com/p/gdata-java-client/downloads (загрузка GDataAPI)
  3. http://code.google.com/p/guava-libraries/ (гуава -библиотеки)
person Yu Sun corn    schedule 25.02.2011
comment
Спасибо за ваше решение. Но я предпочитаю не добавлять библиотеку, размер которой слишком велик. Мне нужно выяснить, какой шаг или что-то не так. - person shiami; 01.03.2011
comment
Я вижу и описал по-другому. Пожалуйста, проверь это. - person Yu Sun corn; 02.03.2011

Вы можете использовать HttpClient из httpcomponents apache для создания http-запросов.

Найдите руководства здесь.

person Suraj Chandran    schedule 24.02.2011
comment
Привет, я пробовал в качестве учебников. Не знаю, как это работает. Не могли бы вы привести рабочий пример? Спасибо! - person shiami; 25.02.2011