REST-Schnittstelle mit PUT-methode

ABAP, Java, BSP, etc.
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

REST-Schnittstelle mit PUT-methode

Beitrag von GünterL (ForumUser / 7 / 0 / 0 ) »
Hallo liebe ABAP-Freaks,

mal ne Frage: Ich möchte eine REST-SSt programmieren, indem ich mir über eine RFC-Destination eine Instanz zu IF_HTTP_CLIENT anlege! Zu dieser lege ich eine Instanz der Klasse cl_rest_http_client an, um dann im späteren Verlauf die PUT-Methode aufzurufen.
Doch leider bekomme ich immer den Status 405: not allowed zurück, obwohl die RFC-Destination auch über Proxy mit User etc. i. O. ist und der PUT-request über POSTMAN funktioniert!

Zu erwähnen wäre hier noch, dass ich eine Datei binär übertragen möchte!

Code: Alles auswählen.

      cl_http_client=>create_by_destination(
        EXPORTING
          destination              = iv_rfcdest
        IMPORTING
          client                   = lo_client
        EXCEPTIONS
          argument_not_found       = 1
          destination_not_found    = 2
          destination_no_authority = 3
          plugin_not_active        = 4
          internal_error           = 5
          OTHERS                   = 6
             ).
.....
    DATA(lo_rest) = NEW  cl_rest_http_client( io_http_client = lo_client ).
    lo_entity = lo_rest->if_rest_client~create_request_entity( iv_multipart = 
                                  abap_true ).
.....
* HTTP PUT
    lo_entity->set_binary_data( iv_data = lv_data ). "lv_data = XSTRING
    lo_rest->if_rest_resource~put( io_entity = lo_entity ).
    DATA(lo_response)  = lo_rest->if_rest_client~get_response_entity( ).
    DATA(lv_http_status)   = lo_response->get_header_field( '~status_code' ).

lv_http_status = 405!?!?!?
bin für jeden Input offen :-)

Danke schon mal für Euren Input ...

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: REST-Schnittstelle mit PUT-methode

Beitrag von GünterL (ForumUser / 7 / 0 / 0 ) »
So, habe das Problem gelöst!
War eigentlich alles richtig, hatte nur leider ein Blank zuviel drin :-(

lo_client created by URL with proxy!

Bei Proxy-Verwendung darauf achten, dass dieser nur HTTP 1.0 kann!!

lo_client->propertytype_logon_popup = lo_client->co_disabled.
lo_client->request->set_method( 'PUT' ).
lo_client->request->set_version( if_http_request=>co_protocol_version_1_0 ).

lt_header = VALUE #( ( name = 'accept' value = '*/*' )
( name = 'accept-encoding' value = 'gzip,deflate,br' )
( name = 'Content-Type' value = if_rest_media_type=>gc_multipart_form_data )
).
lo_client->request->set_header_fields( lt_header ).
lo_client->request->if_http_entity~set_formfield_encoding( formfield_encoding = cl_http_request=>if_http_entity~co_encoding_raw ).

DATA(lo_part) = lo_client->request->if_http_entity~add_multipart( ).
lv_value = |form-data; name="file"; filename="{ lv_filename }"|.
lo_part->set_header_field( name ='Content-Disposition' value = lv_value ).
lo_part->set_data( data = lv_data offset = 0 ).

lo_client->send( EXPORTING timeout = 300
EXCEPTIONS http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4
).

Damit geht das! Aber ich habe jetzt leider in dem Body-Content zwischen der Boundary och die Header-Fields mit drin! Warum die auch immer da mit übertragen und nicht rausgefiltert werden.
Na ja, vielleicht weißja jemand, wie man die weg bekommt :-)
VG
Günter

Seite 1 von 1

Vergleichbare Themen

14
Antw.
11383
Views
Methode vorschreiben, Schnittstelle nicht
von ralf.wenzel » 16.11.2014 13:55 • Verfasst in ABAP Objects®
1
Antw.
1424
Views
Konsumieren des REST Service accounts.deleteAccount
von ABAPlerin » 30.06.2022 18:07 • Verfasst in SAP Cloud Platform
10
Antw.
2526
Views
SAP REST API Aufruf Problem / SSL-Zertifikat Überprüfung
von sap_koun » 17.08.2021 18:06 • Verfasst in ABAP® für Anfänger
3
Antw.
1175
Views
SAP ABAP Rest aufruf: http communication failure?
von sap_koun » 29.12.2022 01:03 • Verfasst in ABAP® für Anfänger
12
Antw.
4381
Views
SAP ABAP REST: Login Data aus SM59 verwenden
von sap_koun » 07.08.2023 13:52 • Verfasst in ABAP® für Anfänger

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.