2016-08-08 52 views
0

Ich versuche Indy zu verwenden, um ein RevContent-oAuth-Token gemäß this page abzurufen. Hier ist mein Code:Indy verwenden, um Revcontent-OAuth-Token abzurufen

procedure TForm2.Button1Click(Sender: TObject); 
var 
    IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocketOpenSSL; 
    idhttp:tidhttp; 
    params: TStringList; 
begin 
    idhttp:=tidhttp.create(self); 
    IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocketOpenSSL.create(nil); 
    with IdSSLIOHandlerSocket1 do begin 
    SSLOptions.Method := sslvSSLv23; 
    SSLOptions.SSLVersions := [sslvSSLv23]; 
    end; 

    params := TStringList.create; 
    params.add('clientid=xxyyzz'); 
    params.add('client_secret=xxyyzzxxyyzzxxyyzzxxyyzzxxyyzzxxyyzz'); 
    params.add('grant_type=client_credentials'); 
    with IdHTTP do begin 
    IOHandler := IdSSLIOHandlerSocket1; 
    Request.ContentType := 'application/x-www-form-urlencoded'; 
    end; 
    showmessage(idhttp.Post('https://api.revcontent.io/oauth/token',params)); 
end; 

Aber immer, wenn ich es laufen bekomme ich einen 400 Bad Request Fehler. Was mache ich falsch?

+2

Verwenden Sie 'client_id', nicht' clientid'. Verwenden Sie nicht SSL3, diese Site unterstützt TLS1. Legen Sie ContentType nicht fest. Verwenden Sie try/except um 'Post', um die Ausnahme abzufangen und die volle Fehlermeldung' (E als EIdHTTPProtocolException) zu bekommen. ErrorMessage' – smooty86

+0

yep .... Ich habe mich gerade selbst entdeckt, nachdem ich es durch Fiddler ausgeführt hatte, dass ich client_id nicht benutzte eine Antwort und ich werde dir Kredit geben. –

Antwort

1

Verwenden Sie client_id, nicht clientid.
Verwenden Sie nicht SSL3, diese Site unterstützt TLS1.
Setzen Sie ContentType nicht.
Verwenden Sie versuchen/ausgenommen um Post Ausnahme abfangen und vollständige Fehlermeldung erhalten (E as EIdHTTPProtocolException).ErrorMessage