Post-Methode für API´s

Getting started ... Alles für einen gelungenen Start.
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Post-Methode für API´s

Beitrag von Bright4.5 (Specialist / 291 / 21 / 1 ) »
Hallo zusammen,

ich würde gerne noch Daten per API auf eine URL hochladen. Weiß jemand vielleicht welche Methode man da nutzen müsste, um Daten hier anzuhängen um diese hochzuladen? Ich habe da schon einiges probiert, aber leider hat es bisher noch nicht geklappt.

Hat jemand so etwas schon mal gemacht und hätte mir da einen Tipp?

Hier wäre mein Coding:

Code: Alles auswählen.

TRY.

      TYPES: BEGIN OF ty_test,

          pernnr TYPE p2001-pernr,
          awart TYPe p2001-awart,
     END OF ty_test.


    DATA: lo_client      TYPE REF TO if_http_client,
          lo_request     TYPE REF TO if_http_request,
          lv_rc          TYPE sy-subrc,
          lv_http_rc     TYPE sy-subrc,
          lv_xml_xstring TYPE xstring,
          lv_xml_string  TYPE string,
          lv_url         TYPE string VALUE 'X'.

    DATA: lv_data TYPE ty_test,
          gs_json TYPE string.


    CALL METHOD cl_http_client=>create_by_url
      EXPORTING
        url                = lv_url
        proxy_host         = 'X'
        proxy_service      = '8080'
*       ssl_id             =
*       sap_username       =
*       sap_client         =
      IMPORTING
        client             = lo_client
      EXCEPTIONS
        argument_not_found = 1
        plugin_not_active  = 2
        internal_error     = 3
        OTHERS             = 4.
    IF sy-subrc <> 0.
*   Implement suitable error handling here
    ENDIF.

    CALL METHOD lo_client->authenticate(
      EXPORTING
        proxy_authentication = 'X'
        client               = '200'
        username             = X
        password             = X
        language             = X

                           ).

*
*DATA: http_dest TYPE rfcdest VALUE 'ZTEST_HTTP'.
*
* cl_http_client=>create_by_destination( EXPORTING
* destination = http_dest IMPORTING client = lo_client ).
*
* CALL METHOD lo_client->request->set_method(
* if_http_request=>co_request_method_get ).



CALL METHOD lo_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state         = 2
http_processing_failed     = 3
http_invalid_timeout       = 4
OTHERS                     = 5.
IF sy-subrc <> 0.
RAISE connection_error.
ENDIF.

CALL METHOD lo_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state         = 2
http_processing_failed     = 3
OTHERS                     = 4.



    IF lv_rc = 0.
**http status code
      lo_client->response->get_status( IMPORTING code = lv_http_rc ).

      IF lv_http_rc <> 200.
        """KO
      ELSE. "status 200 ->>OK
        CLEAR: lv_xml_xstring.
        lv_xml_xstring = lo_client->response->get_data( ).

      ENDIF.
    ENDIF.

    lo_client->close( ).


    DATA(o_conv_r) = cl_abap_conv_in_ce=>create( input = lv_xml_xstring encoding = 'UTF-8' ).
    o_conv_r->read( IMPORTING data = lv_xml_string ).

    WRITE: / lv_xml_string.




ENDTRY.
Vielen Dank im Voraus.

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


Re: Post-Methode für API´s

Beitrag von Radinator (ForumUser / 46 / 10 / 6 ) »
Hi,

der Code an sich ist relativ nichts-sagend. Viele Leerzeilen, nicht verwendeter und auskommentierter Code und teils seltsame Formatierung.

Es wäre gut, wenn du zuerst beschreiben könntest was aktuell das Problem ist. Bekommst du beim Versuch die Datei hochzuladen eine Fehlermeldung? Wenn ja, welche?

Außerdem würde ich dir raten nicht den gesamten Code in einen einzigen TRY CATCH Block zu packen und vor allem nicht auf die Fehlerbehandlung zu verzichten ;) Da bei einem Fehlerfall aktuell ein "Fire and Forget" hast. Sprich: Es kommt zwar ein Fehler daher, aber du weißt nicht konkret welcher Fehler überrhaupt passiert, woran es scheitert. Entweder im Dev-Schritt das TRY CATCH weglassen und erst nach dem Ausmerzen der Kinderkrankheiten wieder einfügen oder ein entsprechendes Logging via WRITE auf Basis des Fehlers einbauen.

Ein Versuch der Beantwortung deiner Frage: Ich hab mal ChatGPT angeworfen und die Frage "Wie kann ich in SAP ABAP über eine externe API eine Datei hochladen?" gestellt. Die Antwort war großteils gleich mit dem Code, den du schon erstellt hast. Was mir jedoch aufgefallen ist, der Code von ChatGPT hat noch einen Schritt nach dem create_by_url und zwar ein HTTP-Methode setzen.
Kann sein, dass das bei dir fehlt.
Aber im Grunde:
1.) HTTP Client basierend auf der URL erstellen
2.) HTTP Methode setzen
3.) Header Informationen setzen
4.) Datei als XSTRING bereitstellen
5.) Upload im Format multipart/form-data
6.) client->send( )
7.) client->response lesen und verarbeiten
8.) Kaffee genießen ;)

VG radinator

Re: Post-Methode für API´s

Beitrag von msfox (Specialist / 386 / 58 / 76 ) »
ich würde gerne noch Daten per API auf eine URL hochladen.
Erklär' das mal genauer. Wohin willst du denn die Daten hochladen? In eine Cloud? Ich habe das letztens in eine NextCloud gemacht. Das ist ja am Ende auch nur eine URL. Darum frage ich.
Normal im HTML gibt es ja auch die Funktion für einen Upload. Dann laden die Daten (Dateien) in einem zugänglichen Verzeichnis. Auch wieder nur eine URL. Auch ein WebServerice wird letztlich durch eine URL definiert. URL kann also alles mögliche sein.

Re: Post-Methode für API´s

Beitrag von Bright4.5 (Specialist / 291 / 21 / 1 ) »
Hallo zusammen,

vielen Dank für euere Antworten. Ich habe es jetzt gelöst.

In der URL war noch ein Dreher drin und ich musste noch die folgenden Methoden hinzufügen:

lo_client->request->set_method( 'POST' ).
lo_client->request->set_content_type( 'application/json' ).
lo_client->request->set_data( lv_payload_x ).

Seite 1 von 1

Vergleichbare Themen

3
Antw.
731
Views
HTTPS Aufruf mit Parameter mit POST Methode
von stony007_de » 21.11.2022 12:29 • Verfasst in ABAP® für Anfänger
21
Antw.
16281
Views
HTTPS POST mit Dateien anhängen
von Adrian » 28.06.2013 12:03 • Verfasst in ABAP® für Anfänger
2
Antw.
4574
Views
HTTP-Post von Dateien in ABAP
von Abrissbirne » 17.09.2012 01:44 • Verfasst in ABAP® Core
0
Antw.
1308
Views
0
Antw.
3583
Views
WebDynpro Post-Exit geht nicht
von kaim77 » 29.06.2020 21:19 • Verfasst in Web-Dynpro, BSP + BHTML

Über diesen Beitrag



Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Feldwerte vergleichen
vor 5 Stunden von wreichelt 2 / 27
Workflow-Datenfluss mit Multi-Line-Container
vor 7 Stunden von ewx gelöst 2 / 82
Mahnung erstellen
vor 11 Stunden von Sebastian82 4 / 112
Absprung VA02 Position
vor 2 Tagen von gs3rr4 gelöst 3 / 108

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.

Aktuelle Forenbeiträge

Feldwerte vergleichen
vor 5 Stunden von wreichelt 2 / 27
Workflow-Datenfluss mit Multi-Line-Container
vor 7 Stunden von ewx gelöst 2 / 82
Mahnung erstellen
vor 11 Stunden von Sebastian82 4 / 112
Absprung VA02 Position
vor 2 Tagen von gs3rr4 gelöst 3 / 108

Unbeantwortete Forenbeiträge

OPD Druck im SPOOL
vor 2 Tagen von Manfred K. 1 / 70
Export von Spools in XLSX
vor einer Woche von abapamateur 1 / 760
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 1358