Отправка в блоггер через idHTTP - PullRequest
0 голосов
/ 17 августа 2011

Я пытаюсь опубликовать сообщение в Blogger, используя компонент idHTTP, однако получаю ошибку «HTTP / 1.0 400 Bad Request».

Сначала я получаю код авторизации, который отлично работает сиспользуя код ниже:

TStringList *request = new TStringList;
TStringList *response = new TStringList();

IdHTTP2->Request->Connection = "Keep-Alive";
IdHTTP2->Request->ContentType = "application/x-www-form-urlencoded";
IdSSLIOHandlerSocketOpenSSL1->SSLOptions->Method = sslvSSLv23;

request->Clear();
request->Values["accountType"] = "GOOGLE";
request->Values["Email"]       = "xxxxxxx@gmail.com";
request->Values["Passwd"]      = "yyyyyyy";
request->Values["source"]      = "test-test";
request->Values["service"]     = "blogger";

response->Text = IdHTTP2->Post("https://www.google.com/accounts/ClientLogin", request);
auth = response->Values["Auth"];  //working perfectly

Затем я получаю blogID и, наконец, пытаюсь опубликовать запись в Blogger, используя приведенный ниже код, но в этот момент я получаю ошибку «HTTP / 1.0 400 Bad Request».

request->Clear();
request->Text = Memo3->Lines->Text;  //put entry into request var

IdHTTP2->Request->CustomHeaders->Clear();
IdHTTP2->Request->CustomHeaders->Add("GData-Version=2.0");
IdHTTP2->Request->CustomHeaders->Add("Authorization: GoogleLogin auth="+auth);
IdHTTP2->Request->ContentType = "application/atom+xml";

response->Text = IdHTTP2->Post("https://www.blogger.com/feeds/" + blogID + "/posts/default", request); // I got "HTTP/1.0 400 Bad Request" error right here.

Это запись, которую я пытаюсь опубликовать:

<entry xmlns='http://www.w3.org/2005/Atom'>
  <title type='text'>Marriage!</title>
  <content type='xhtml'>
    <div xmlns="http://www.w3.org/1999/xhtml">
      <p>Mr. Darcy has <em>proposed marriage</em> to me!</p>
      <p>He is the last man on earth I would ever desire to marry.</p>
      <p>Whatever shall I do?</p>
    </div>
  </content>
  <category scheme="http://www.blogger.com/atom/ns#" term="marriage" />
  <category scheme="http://www.blogger.com/atom/ns#" term="Mr. Darcy" />
</entry>

Я искал правильный способ публикации с помощью idHTTP, но ничего не нашел ..: (

Кто-нибудь знает, что я делаю неправильно?

Кстати, я использую CodeGear Delphi / C ++ Builder 2009 и версия Indy - 10.

Любая помощь очень ценится. Спасибо!

1 Ответ

0 голосов
/ 19 августа 2011

Я узнал, как заставить это работать.

Я удалил строку

 IdHTTP2->Request->CustomHeaders->Add("GData-Version=2.0");

Затем я заменил

 IdHTTP2->Request->CustomHeaders->Add("Authorization: GoogleLogin auth="+auth);

на

 IdHTTP2->Request->CustomHeaders->Values["Authorization"] = "GoogleLogin auth="+auth;

От: https://forums.embarcadero.com/message.jspa?messageID=252770

...