У меня есть действующий токен доступа к учетной записи Dropbox (API v2), Delphi 7 и Indy 10. Когда я пытаюсь использовать этот токен, у меня есть исключение «HTTP/1.1 400 Bad Request». Я смотрю Dropbox API v2 и не могу понять: Что случилось с запросом?Что случилось с запросом Dropbox?
procedure TDropboxSaveFilterForm.TestButtonClick(Sender: TObject);
const
AccessToken = 'Hq7XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
var
IdHTTP: TIdHTTP;
Source: TStringList;
Res, URL: WideString;
begin
Source := TStringList.Create;
IdHTTP := TIdHTTP.Create(nil);
IdHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
URL := 'https://api.dropboxapi.com/2/files/list_folder' + '?' +
'Authorization=Bearer ' + AccessToken;
Res := IdHTTP.Post(URL, Source);
Source.Free;
end;
Новый код с заголовком, ошибка тот же :-( По Indy:. Запрос Определяет значения заголовка для отправки на сервер HTTP
procedure TDropboxSaveFilterForm.TestHeaderButtonClick(Sender: TObject);
const
AccessToken = 'Hq7XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
URL = 'https://api.dropboxapi.com/2/files/list_folder';
var
IdHTTP: TIdHTTP;
Source: TStringList;
Head, Res: WideString;
Stream: TMemoryStream;
begin
Source := TStringList.Create;
IdHTTP := TIdHTTP.Create(nil);
IdHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
Head := 'Authorization: Bearer ' + AccessToken;
Stream := TMemoryStream.Create;
Stream.Write(Head, Length(Head));
Stream.Position := 0;
IdHTTP.Request.Source := Stream;
Res := IdHTTP.Post(URL, Source);
Source.Free;
end;
Авторизация не является частью запрошенного URL-адреса, но должна быть отправлена в заголовках HTTP. –
Спасибо, Роальд ван Доорн. Я пробовал использовать голову, вот так: 'code' Глава: = 'Авторизация: Носитель' + AccessToken; Поток: = TMemoryStream.Create; Stream.Write (Head, Length (Head)); Stream.Position: = 0; IdHTTP.Request.Source: = Stream; Res: = IdHTTP.Post (URL, источник); 'code' и не имеют успеха. Может, у вас есть рабочий пример? –
Спасибо, @ Roald. –