Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2012, 23:59   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию Google API. Malformed multipart body.

Доброго времени суток!

Работаю с Youtube API через Google.
Авторизация clientLogin проходит успешно.

Проблема в загрузке видео туда.

Использую Synapse.
Вот что диктует гугл по загрузке видео.

Очевидно, что Indy идут лесом ввиду нестандартного гугл-подхода к аплоаду файлов на сервисы.

Авторизация проходит на отлично.
Формирую тело POST запроса:
Код:
            sBound := sItem.ID;
            fHTTP.Clear;
            fHTTP.Document.Clear;
            HTMLStream.Clear;

            fHTTP.TargetHost:= 'uploads.gdata.youtube.com';
            fHTTP.Headers.Add('Authorization: ClientLogin token="' +
              sAuthKey + '"');
            fHTTP.Headers.Add('GData-Version: 2');
            fHTTP.Headers.Add('X-GData-Client: ' + cApp_Gid);
            fHTTP.Headers.Add('X-GData-Key: key=' + cYTDevKey);
            fHTTP.Headers.Add('Slug: ' + ExtractFileName(sItem.Filename));
            fHTTP.MimeType := 'multipart/related; boundary="' + sBound + '"';

            // Post Data
            HTMLStream.WriteString('--' + sBound);
            HTMLStream.WriteString(CR);
            HTMLStream.WriteString
              ('Content-Type: application/atom+xml; charset=UTF-8');
            HTMLStream.WriteString(CRLF);

            XML := TNativeXml.CreateName('entry');
            try
              XML.XmlFormat := xfReadable;
              with XML.Root do
              begin
                WriteAttributeString('xmlns', 'http://www.w3.org/2005/Atom');
                WriteAttributeString('xmlns:media',
                  'http://search.yahoo.com/mrss/');
                WriteAttributeString('xmlns:yt',
                  'http://gdata.youtube.com/schemas/2007');
                with NodeNew('media:group') do
                begin
                  with NodeNew('media:title') do
                  begin
                    WriteAttributeString('type', 'plain');
                    Value := sItem.Title;
                  end;

                  with NodeNew('media:description') do
                  begin
                    WriteAttributeString('type', 'plain');
                    Value := sItem.Description;
                  end;

                  with NodeNew('media:category') do
                  begin
                    WriteAttributeString('scheme',
                      'http://gdata.youtube.com/schemas/2007/categories.cat');
                    Value := 'Film';
                  end;
                  WriteString('media:keywords', '');
                end;
              end;
              XML.SaveToStream(HTMLStream);
            finally
              FreeAndNil(XML);
            end;
            HTMLStream.WriteString('--' + sBound);
            HTMLStream.WriteString(CR);
            HTMLStream.WriteString('Content-Type: video/flv');
            HTMLStream.WriteString(CR);
            HTMLStream.WriteString('Content-Transfer-Encoding: binary');
            HTMLStream.WriteString(CRLF);
            MS := TMemoryStream.Create;
            try
              MS.LoadFromFile(sItem.Filename);
              MS.SaveToStream(HTMLStream);
            finally
              FreeAndNil(MS);
            end;
            HTMLStream.WriteString(CR);
            HTMLStream.WriteString('--' + sBound + '--');
            HTMLStream.SaveToFile(myDir + 'dfgdd.txt');

            fHTTP.Document.LoadFromStream(HTMLStream);

            if fHTTP.HTTPMethod('POST', cGAPI_UploadURL_POST_DEF) then
            begin
              HTMLStream.LoadFromStream(fHTTP.Document);
              sHTML.Text := HTMLStream.DataString;
              sHTML.Text := sHTML.Text;
            end;

            //
в txt сбрасывается это:
Код:
--79BED6B8
Content-Type: application/atom+xml; charset=UTF-8

<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007">
	<media:group>
		<media:title type="plain">fghfghfghfg</media:title>
		<media:description type="plain">fghfghfghfghfghfh</media:description>
		<media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">Film</media:category>
		<media:keywords/>
	</media:group>
</entry>
--79BED6B8
Content-Type: video/flv
Content-Transfer-Encoding: binary

<BINARY DATA>
--79BED6B8--
Сервер отвечает: Malformed multipart body.

Где я напортачил? Уже часа 2 ищу ошибку.....
Человек_Борща вне форума Ответить с цитированием
Старый 10.09.2012, 19:30   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Проблему решил другим способом.
Человек_Борща вне форума Ответить с цитированием
Старый 10.09.2012, 19:47   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

.....каким?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 10.09.2012, 21:38   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

этим: https://developers.google.com/youtub...ased_uploading

Настоятельно рекомендую читать только английские хелпы. В русских есть мега-лолы в виде ооочеень устаревшей инфы.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Google+ Api Small_Byte Работа с сетью в Delphi 11 02.08.2012 16:25
Google maps API veter48 JavaScript, Ajax 1 27.06.2012 11:03
Google Maps API RMEN JavaScript, Ajax 0 24.05.2010 16:40
Google Docs API Serg97 Работа с сетью в Delphi 0 07.08.2009 09:58
Google Map API qwestor PHP 3 22.01.2008 08:12