Ошибка 403 означает, что вы, вероятно, используете неверный ключ API в заголовке Authorization
. Кроме того, убедитесь, что для Request.BasicAuthentication
установлено значение False, чтобы TIdHTTP
не пытался отправить собственный заголовок Authorization
.
При этом я вижу несколько других проблем с вашим кодом.
Вы теряете память, если TIdHTTP.Post()
вызывает исключение при сбое.
Вы отправляете 2 Content-Type
заголовка (один из Request.ContentType
, а другой из CustomerHeaders.Values['Content-Type']
). Используйте только Request.ContentType
.
Вы отправляете запрос на originstamp.org
, когда вместо него следует отправить на api.originstamp.org
.
Вы создаете и настраиваете объект TIdHTTP
с именем IndyH
, но вы выполняете фактический Post()
, используя вместо этого другой объект с именем IdHttp1
.
Попробуйте это:
function TInterNetFm.GetTIMESTAMP(const AHash: string): string;
var
IndyH : TIdHTTP;
Response : string;
begin
IndyH := TIdHTTP.Create(nil);
try
IndyH.Request.BasicAuthentication := False;
IndyH.Request.CustomHeaders.Values['Authorization'] := 'YOUR_API_KEY';
Response := IndyH.Get('http://api.originstamp.org/api/' + AHash);
finally
IndyH.Free;
end;
// parse Response JSON as needed...
Result := ...;
end;
function TInterNetFm.GetTIMESTAMP(const AHash, AData: string): string;
var
IndyH : TIdHTTP;
JSONToSend : TStringStream;
Response : string;
begin
IndyH := TIdHTTP.Create(nil);
try
IndyH.Request.BasicAuthentication := False;
IndyH.Request.ContentType := 'application/json';
IndyH.Request.CustomHeaders.Values['Authorization'] := 'YOUR_API_KEY';
JSONToSend := TStringStream.Create(AData, TEncoding.UTF8);
try
Response := IndyH.Post('http://api.originstamp.org/api/' + AHash, JSONToSend);
finally
JSONToSend.Free;
end;
finally
IndyH.Free;
end;
// parse Response JSON as needed...
Result := ...;
end;