Hallo,
ich möchte gerne mit SAP eine Anfrage über einen HTTP-GET-Befehl aus SAP heraus an einen Google Service stellen. Dabei muss ich mich bei google authentifizieren. Das mache ich über das Google Client Login, dabei sende ich eine Anfrage an
https://www.google.com/accounts/ClientLogin und bekomme auch das gewünschte Token zurückgeschickt. Für die Anfrage an den Google Dienst muss ich dieses Token dann über den Header Authorization angeben.
Das sieht so aus:
call method cl_http_client=>create_by_url
exporting
url = lv_sheet_url
importing
client = lo_http_client
exceptions
argument_not_found = 1
internal_error = 2
plugin_not_active = 3
others = 4.
lo_http_client1->request->set_header_field(
name = '~request_method'
value = 'GET'
).
concatenate
'GoogleLogin auth=' lv_token
into lv_auth.
CALL METHOD lo_http_client->request->set_header_field(
exporting
name = 'Authorization'
value = lv_auth
).
lo_http_client->request->set_header_field(
name = 'GData-Version'
value = '3.0'
).
call method lo_http_client->send
exceptions
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
http_invalid_timeout = 4
others = 5.
An dieser Stelle bekomme ich jetzt sy-subrc=1. Ich vermute, dass das Problem daran liegt wie der Authorisierungsheader angegeben wird. Wenn ich ihn weglasse komme ich weiter, bekomme aber einen Fehler wenn ich call method lo_http_client->receive aufrufe. Ist es möglich, dass es ein gewisses Maximum für die Länge eines Headers gibt? Der Token besteht aus 332 Zeichen.
Für Antworten oder Lösungsvorschläge wäre ich sehr dankbar.
Viele Grüße ZSven