HTTPS POST mit Dateien anhängen

Getting started ... Alles für einen gelungenen Start.
22 Beiträge • Seite 1 von 2 (current) Nächste
22 Beiträge Seite 1 von 2 (current) Nächste

HTTPS POST mit Dateien anhängen

Beitrag von Adrian (Specialist / 126 / 61 / 0 ) » 28.06.2013 12:03
Hallo @ all,

wie mache ich in abap einen HTTPS Post und hänge daran eine Datei an ?

Vielen Dank.

Grüße Adrian


Re: HTTPS POST mit Dateien anhängen

Beitrag von Tron (Top Expert / 1167 / 22 / 263 ) » 29.06.2013 14:57
Moin,
z.B. so.

Code: Alles auswählen.

DATA:
    l_client TYPE REF TO if_http_client,
    l_request TYPE REF TO if_http_request,

    l_url TYPE string VALUE 'https://www.derserverwartet/'.

** Creation of new IF_HTTP_Client object
CALL METHOD cl_http_client=>create_by_url
  EXPORTING
    url                = l_url
  IMPORTING
    client             = l_client
  EXCEPTIONS
    argument_not_found = 1
    plugin_not_active  = 2
    internal_error     = 3
    OTHERS             = 4.


IF sy-subrc <> 0.
  CASE sy-subrc.
    WHEN 1.
      MESSAGE e000(sr) WITH
        'Creation of client failed: Argument not found' .   "#EC NOTEXT
    WHEN 2.
      MESSAGE e000(sr) WITH
       'Creation of client failed: plugin not active' .     "#EC NOTEXT
    WHEN OTHERS.
      MESSAGE e000(sr) WITH 'Creation of client failed'.    "#EC NOTEXT
  ENDCASE.
ENDIF.

l_request = l_client->request.

CALL METHOD cl_http_utility=>set_request_uri
  EXPORTING
    request = l_request
    uri     = 'generate'.

CALL METHOD l_client->request->set_method(
  if_http_request=>co_request_method_post ).

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
Adrian

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: HTTPS POST mit Dateien anhängen

Beitrag von Adrian (Specialist / 126 / 61 / 0 ) » 01.07.2013 08:14
Hi Tron,

wo gebe ich bei deinem Beispielprogramm die Datei an die das Programm mit übergeben soll.

Grüße
Adrian

Re: HTTPS POST mit Dateien anhängen

Beitrag von Tron (Top Expert / 1167 / 22 / 263 ) » 01.07.2013 09:37
Moin.
CALL METHOD l_client->send

Hier ein Coding, welches per POST eine Antwort des Servers erwartet.

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  YBC_WINSOCK (rel.EC6)
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

*http://abapcodexperiments.wordpress.com/2011/04/06/abap-http-request/


REPORT  ybc_transformation_wsock2.

DATA http_rc TYPE i.

DATA: subrc TYPE i,
      errortext TYPE string.


DEFINE m_check_err.
  if sy-subrc <> 0.
    call method l_client->get_last_error
      importing
        code    = subrc
        message = errortext.
    message s000(sr) with errortext.
    exit.
  endif.
END-OF-DEFINITION.



DATA:
    l_client TYPE REF TO if_http_client,
    l_request TYPE REF TO if_http_request,
    l_url TYPE string VALUE 'http://10.98.5.49:8983'.

DATA: response TYPE string.


* Creation of new IF_HTTP_Client object
CALL METHOD cl_http_client=>create_by_url
  EXPORTING
    url                = l_url
  IMPORTING
    client             = l_client
  EXCEPTIONS
    argument_not_found = 1
    plugin_not_active  = 2
    internal_error     = 3
    OTHERS             = 4.


m_check_err.

l_client->request->set_version(
     if_http_request=>co_protocol_version_1_1 ).

  CALL METHOD l_client->request->set_method(
    if_http_request=>co_request_method_post ).

* zu sendende Daten
CALL METHOD l_client->request->set_form_field
  EXPORTING
    name  = 'DATA'
    value = 'binary or utf8'.

* sending/receiving
l_client->response->get_status( IMPORTING code = http_rc ).

CALL METHOD l_client->send
  EXCEPTIONS
    http_communication_failure = 1
    http_invalid_state         = 2
    http_processing_failed     = 3
    OTHERS                     = 4.

l_client->response->get_status( IMPORTING code = http_rc ).

m_check_err.

CALL METHOD l_client->receive
  EXCEPTIONS
    http_communication_failure = 1
    http_invalid_state         = 2
    http_processing_failed     = 3.

m_check_err.

* Capture the result data
response = l_client->response->get_cdata( ).

BREAK-POINT.

* VERY IMPORTANT: close your connection
l_client->close( ).

EXIT.
Kennst Du die exakte HTTP-Sequence, die der Server erwartet ?
Beispiel:
http://help.sap.com/saphelp_45b/helpdat ... ontent.htm
gruß Jens
Zuletzt geändert von Tron am 01.07.2013 09:39, insgesamt 1-mal geändert.

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
Adrian

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: HTTPS POST mit Dateien anhängen

Beitrag von a-dead-trousers (Top Expert / 3477 / 107 / 904 ) » 01.07.2013 09:38
EDIT: Da war wer schneller ;)
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: HTTPS POST mit Dateien anhängen

Beitrag von Adrian (Specialist / 126 / 61 / 0 ) » 01.07.2013 10:18
Ja ich kenne den Aufbau der Datei.

HEADER
POST /hapld/tos/kdwhapltos HTTP/1.1
Host: www.pld-certify.ups.com
Content-type: multipart/mixed; boundary=BOUNDARY
Content-length: 1038


CONTEND PART
--BOUNDARY
Content-type: application/x-www-form-urlencoded
Content-length: 140

AppVersion=1.0&AcceptUPSLicenseAgreement=Yes&ResponseType=application/x-ups-pld&VersionNumber=V4R1&UserId=xxx&Password=xxx

--BOUNDARY
Content-type: application/x-ups-binary
Content-length: 719

020082 2.0 2002101700000000000010500 000000001*AA0A1754 US 1234567002000001*BA1z1234560100002352 00001+0000000000000010 +0000000000000000LBS01PRE10 …

--BOUNDARY—


Wie trenne denn den Header vom Contend part ?

Grüße Adrian

Re: HTTPS POST mit Dateien anhängen

Beitrag von Tron (Top Expert / 1167 / 22 / 263 ) » 01.07.2013 11:44
....

CALL METHOD client->request->ADD_MULTIPART
CALL METHOD client->request->APPEND_CDATA
CALL METHOD client->request->APPEND_CDATA2
CALL METHOD client->request->APPEND_DATA

alles Methoden der Klasse (SE24) CL_HTTP_ENTITY.

Tip: siehe auch include LSCMS_HTTPF01 (HTTP mit Funktionsbausteinen z.B.: call function 'HTTP2_PUT_COMPONENT')
viel Erfolg

lg Jens

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
Adrian

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: HTTPS POST mit Dateien anhängen

Beitrag von Adrian (Specialist / 126 / 61 / 0 ) » 01.07.2013 13:39
Hi Tron,

ich habe noch nie mit Objekten gearbeitet. Kannst du anhand des Dateiaufbaus oben mal ein kleines Beispiel programmieren.

Vielen Dank.

Grüße Adrian

Re: HTTPS POST mit Dateien anhängen

Beitrag von Tron (Top Expert / 1167 / 22 / 263 ) » 01.07.2013 16:21
... weil Dus bist. :wink:

In diesem Beispiel wird die URL direkt übergeben.

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  YBC_HTTP_TEST                                               *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ybc_http_test                                               .
CONSTANTS crlf(2) VALUE %_cr_lf.

DATA: subrc TYPE i,
      errortext TYPE string.


DEFINE m_check_err.
  if sy-subrc <> 0.
    call method l_client->get_last_error
      importing
        code    = subrc
        message = errortext.
    message s000(sr) with errortext.
    exit.
  endif.
END-OF-DEFINITION.



DATA:
l_entity TYPE REF TO if_http_entity,
l_client    TYPE REF TO if_http_client ,
http_url       TYPE string.
*p_content      TYPE string.

* Build the url string based on input
http_url = 'http://192.168.216.54:8081'.

* Creation of new IF_HTTP_Client object
CALL METHOD cl_http_client=>create_by_url
  EXPORTING
    url                = http_url
  IMPORTING
    client             = l_client
  EXCEPTIONS
    argument_not_found = 1
    plugin_not_active  = 2
    internal_error     = 3
    OTHERS             = 4.

* Wir arbeiten für die Post
l_client->request->set_header_field( name = '~request_method' value = 'POST' ).

* Setzte Header Parameter für MULTIPART - Übertragung
CALL METHOD l_client->request->set_header_field
  EXPORTING
    name  = 'Content-type'
    value = 'multipart/mixed'.

*=================================================

* Erzeuge ersten MULTIPART Abschnitt
CALL METHOD l_client->request->add_multipart
  RECEIVING
    entity = l_entity.

* Art des Inhalts im aktuellen Abschnitt
CALL METHOD l_entity->set_header_field
  EXPORTING
    name  = 'Content-type'
    value = 'application/x-www-form-urlencoded'.

* Der Inhalt
DATA l_test TYPE string.
l_test =
'AppVersion=1.0&AcceptUPSLicenseAgreement=Yes&ResponseType=application/x-ups-pld&VersionNumber=V4R1&UserId=xxx&Password=xxx'.

CONCATENATE l_test crlf INTO l_test.

* Hänge den Inhalt in den aktuellen Abschnitt
CALL METHOD l_entity->set_cdata
  EXPORTING
    data = l_test.

*=================================================

* Erzeuge zweiten MULTIPART Abschnitt
CALL METHOD l_client->request->add_multipart
  RECEIVING
    entity = l_entity.

* Art des Inhalts im aktuellen Abschnitt
CALL METHOD l_entity->set_header_field
  EXPORTING
    name  = 'Content-type'
    value = 'application/x-ups-binary'.

* Der Inhalt
l_test =
'020082 2.0 2002101700000000000010500 000000001*AA0A1754 US 1234567002000001*BA1z1234560100002352 00001+0000000000000010 +0000000000000000LBS01PRE10 '.

CONCATENATE l_test crlf INTO l_test.

* Hänge den Inhalt in den aktuellen Abschnitt
CALL METHOD l_entity->set_cdata
  EXPORTING
    data = l_test.




*=================================================

* sending/receiving und FEUER FREI
CALL METHOD l_client->send
  EXCEPTIONS
    http_communication_failure = 1
    http_invalid_state         = 2
    http_processing_failed     = 3
    OTHERS                     = 4.

m_check_err.

CALL METHOD l_client->receive
  EXCEPTIONS
    http_communication_failure = 1
    http_invalid_state         = 2
    http_processing_failed     = 3.

m_check_err.


DATA http_rc TYPE i.
***http status code
l_client->response->get_status( IMPORTING code = http_rc ).
break sapuser.
Das Protokoll des Servers (oder "was am Server geschah") :
POST / HTTP/1.0
content-type: multipart/mixed; boundary=ejjeeffe0
content-length: 491
user-agent: SAP Web Application Server (1.0;620)
host: 192.168.216.54:8081
accept-encoding: gzip

--ejjeeffe0
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 122

AppVersion=1.0&AcceptUPSLicenseAgreement=Yes&ResponseType=application/x-ups-pld&VersionNumber=V4R1&UserId=xxx&Password=xxx

--ejjeeffe0
Content-Type: application/x-ups-binary; charset=utf-8
Content-Length: 147

020082 2.0 2002101700000000000010500 000000001*AA0A1754 US 1234567002000001*BA1z1234560100002352 00001+0000000000000010 +0000000000000000LBS01PRE10

--ejjeeffe0--

HTTP/1.0 200 OK
Jetzt das Ganze nochmal mit logischer Destination (SM59)

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  YBC_HTTP_TEST_DEST                                          *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ybc_http_test_dest                                               .

CONSTANTS crlf(2) VALUE %_cr_lf.

DATA: subrc TYPE i,
      errortext TYPE string.


DEFINE m_check_err.
  if sy-subrc <> 0.
    call method l_client->get_last_error
      importing
        code    = subrc
        message = errortext.
    message s000(sr) with errortext.
    exit.
  endif.
END-OF-DEFINITION.



DATA:
l_entity TYPE REF TO if_http_entity,
l_client    TYPE REF TO if_http_client .


* HTTP Destination mit SM59 / Typ G
* Zielmaschine  = 192.168.216.54  / ServiceNr. = 8081
CALL METHOD cl_http_client=>create_by_destination
  EXPORTING
    destination              = 'HTTP_TEST'
  IMPORTING
    client                   = l_client
  EXCEPTIONS
    argument_not_found       = 1
    destination_not_found    = 2
    destination_no_authority = 3
    plugin_not_active        = 4
    internal_error           = 5
    OTHERS                   = 6.


* Wir arbeiten für die Post
l_client->request->set_header_field( name = '~request_method' value = 'POST' ).

* Setzte Header Parameter für MULTIPART - Übertragung
CALL METHOD l_client->request->set_header_field
  EXPORTING
    name  = 'Content-type'
    value = 'multipart/mixed'.

*=================================================

* Erzeuge ersten MULTIPART Abschnitt
CALL METHOD l_client->request->add_multipart
  RECEIVING
    entity = l_entity.

* Art des Inhalts im aktuellen Abschnitt
CALL METHOD l_entity->set_header_field
  EXPORTING
    name  = 'Content-type'
    value = 'application/x-www-form-urlencoded'.

* Der Inhalt
DATA l_test TYPE string.
l_test =
'AppVersion=1.0&AcceptUPSLicenseAgreement=Yes&ResponseType=application/x-ups-pld&VersionNumber=V4R1&UserId=xxx&Password=xxx'.

CONCATENATE l_test crlf INTO l_test.

* Hänge den Inhalt in den aktuellen Abschnitt
CALL METHOD l_entity->set_cdata
  EXPORTING
    data = l_test.

*=================================================

* Erzeuge zweiten MULTIPART Abschnitt
CALL METHOD l_client->request->add_multipart
  RECEIVING
    entity = l_entity.

* Art des Inhalts im aktuellen Abschnitt
CALL METHOD l_entity->set_header_field
  EXPORTING
    name  = 'Content-type'
    value = 'application/x-ups-binary'.

* Der Inhalt
l_test =
'020082 2.0 2002101700000000000010500 000000001*AA0A1754 US 1234567002000001*BA1z1234560100002352 00001+0000000000000010 +0000000000000000LBS01PRE10 '.

CONCATENATE l_test crlf INTO l_test.


* Hänge den Inhalt in den aktuellen Abschnitt
CALL METHOD l_entity->set_cdata
  EXPORTING
    data = l_test.




*=================================================

* sending/receiving und FEUER FREI
CALL METHOD l_client->send
  EXCEPTIONS
    http_communication_failure = 1
    http_invalid_state         = 2
    http_processing_failed     = 3
    OTHERS                     = 4.

m_check_err.

CALL METHOD l_client->receive
  EXCEPTIONS
    http_communication_failure = 1
    http_invalid_state         = 2
    http_processing_failed     = 3.

m_check_err.


DATA http_rc TYPE i.
***http status code
l_client->response->get_status( IMPORTING code = http_rc ).
break sapuser.
Das Ergebnis :
POST / HTTP/1.0
content-type: multipart/mixed; boundary=ejjeeffe0
content-length: 491
user-agent: SAP Web Application Server (1.0;620)
host: 192.168.216.54:8081
accept-encoding: gzip
authorization: Basic VHJvbjpBQkM=
sap-language: D

--ejjeeffe0
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 122

AppVersion=1.0&AcceptUPSLicenseAgreement=Yes&ResponseType=application/x-ups-pld&VersionNumber=V4R1&UserId=xxx&Password=xxx

--ejjeeffe0
Content-Type: application/x-ups-binary; charset=utf-8
Content-Length: 147

020082 2.0 2002101700000000000010500 000000001*AA0A1754 US 1234567002000001*BA1z1234560100002352 00001+0000000000000010 +0000000000000000LBS01PRE10

--ejjeeffe0--

HTTP/1.0 200 OK
viel Erfolg
gruß Jens

Ps. Nochmal "Angehübscht"

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
Adrian

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: HTTPS POST mit Dateien anhängen

Beitrag von Adrian (Specialist / 126 / 61 / 0 ) » 02.07.2013 09:15
Danke Jens.

Wie kann ich meinen POST ansehen um zu schauen wie er aufgebaut ist ?

Re: HTTPS POST mit Dateien anhängen

Beitrag von Tron (Top Expert / 1167 / 22 / 263 ) » 02.07.2013 09:36
...
Adrian hat geschrieben:Wie kann ich meinen POST ansehen um zu schauen wie er aufgebaut ist ?
Ich habe einen lokalen Webserver (XAMPP in einer VM) und zeichne den Netzwerktraffic mit einer Software namens WIRESHARK(portable) auf.
http://de.wikipedia.org/wiki/Wireshark

Falls Du also einen Webserver zu Verfügung hast, könntest Du mit Wireshark Aufzeichnungen Deiner Versuche erstellen.

Es ginge vermutlich aber auch mit 2 SAP-Systemen (Die meisten Unternehmen arbeiten ja vermutlich mit 3 SAP Systemen)

gruß Jens

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
Adrian

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: HTTPS POST mit Dateien anhängen

Beitrag von Adrian (Specialist / 126 / 61 / 0 ) » 16.07.2013 15:20
Hi Jens,

hab es jetzt mal mit Wireshark getestet aber ich bekom da nen error.

Header checksum: 0x0000
Bad: True

Grüße Adrian

Re: HTTPS POST mit Dateien anhängen

Beitrag von Tron (Top Expert / 1167 / 22 / 263 ) » 17.07.2013 08:25
Moin Adrian,
stell mal bitte sicher,
das der SAP HTTP server Dienst richtig läuft und schau mal bitte in der SMICM (Monitor), ob alles "Grün" ist.
Gibt es zur Zeit aktive Anwendungen, welche nachweislich HTTP schon benutzen ? (z.B. Archivelink) ?

Wie sieht Deine Testumgebung derzeit aus ?
(SAP-Release etc.)

gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: HTTPS POST mit Dateien anhängen

Beitrag von Adrian (Specialist / 126 / 61 / 0 ) » 18.07.2013 13:47
Hi Jens,

habs geschafft das richtig zu debuggen.
Das was ich da vorher debugges habe war garnicht der Post.

Ich habe meinen Post mal mit http://WWW.postcatcher.in getestet aber dann kann ich zwar den Header lesen aber den Body nicht.

Header:

Code: Alles auswählen.

{
    "accept-encoding": "gzip",
    "connection": "close",
    "content-length": "99291",
    "content-type": "multipart/mixed; boundary=ejjeeffe0",
    "host": "postcatcher.in",
    "user-agent": "SAP Web Application Server (1.0;700)",
    "x-forwarded-for": "194.25.83.107",
    "x-real-ip": "194.25.83.107",
    "x-request-start": "1374148003186"
}
Grüße Adrian

Re: HTTPS POST mit Dateien anhängen

Beitrag von Adrian (Specialist / 126 / 61 / 0 ) » 18.07.2013 14:07
mein Programm sieht zur Zeit so aus.

Code: Alles auswählen.

TYPES: BEGIN OF datei,

       line(3)                        TYPE n,
       data                           TYPE string,

END OF datei.


DATA: dataset     TYPE string,
      datei       TYPE TABLE OF datei WITH HEADER LINE,
      body_leange TYPE i.

PERFORM entry.

*&---------------------------------------------------------------------*
*&      Form  entry
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM entry.

  PERFORM datei_einlesen.

  PERFORM senden.

ENDFORM.                    "entry

*&---------------------------------------------------------------------*
*&      Form  DATEI_EINLESEN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM datei_einlesen.

  dataset = '\\stherp01.sth.local\SAP_DATENTRANSFER\UPS Tagesabschluss Dateien\Data.txt'.

  OPEN  DATASET dataset FOR INPUT IN TEXT MODE ENCODING DEFAULT.
  READ  DATASET dataset INTO datei-data.
  CLOSE DATASET dataset.

  datei-line = 2.
  INSERT datei INDEX 1.
  CLEAR datei.

  datei-data = 'AppVersion=1.0&AcceptUPSLicenseAgreement=Yes&ResponseType=application/x-ups-pld&VersionNumber=V4R1&UserId=PLDDSTEST&Password=PLDDSTEST'.
  datei-line = 1.
  INSERT datei INDEX 1.
  CLEAR datei.

  SORT datei BY line.

ENDFORM.                    "DATEI_EINLESEN

*&---------------------------------------------------------------------*
*&      Form  SENDEN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM senden.

  CONSTANTS crlf(2) VALUE %_cr_lf.

  DATA: subrc TYPE i,
        errortext TYPE string.


  DEFINE m_check_err.
    if sy-subrc <> 0.
      call method l_client->get_last_error
        importing
          code    = subrc
          message = errortext.
      message s000(sr) with errortext.
      exit.
    endif.
  END-OF-DEFINITION.



  DATA:
  l_entity TYPE REF TO if_http_entity,
  l_client    TYPE REF TO if_http_client ,
  http_url       TYPE string.
*p_content      TYPE string.

* Build the url string based on input
*  http_url = 'https://www.pld-certify.ups.com/hapld/tos/kdwhapltos'.
  http_url = 'http://postcatcher.in/catchers/51e7d59057f59402000008f3'.

* Creation of new IF_HTTP_Client object
  CALL METHOD cl_http_client=>create_by_url
    EXPORTING
      url                = http_url
    IMPORTING
      client             = l_client
    EXCEPTIONS
      argument_not_found = 1
      plugin_not_active  = 2
      internal_error     = 3
      OTHERS             = 4.

* Wir arbeiten für die Post
  l_client->request->set_header_field( name = '~request_method' value = 'POST' ).

  l_client->request->set_version( if_http_request=>co_protocol_version_1_1 ).


* Setzte Header Parameter für MULTIPART - Übertragung
  CALL METHOD l_client->request->set_header_field
    EXPORTING
      name  = 'Content-type'
      value = 'multipart/mixed'.

*=================================================

* Erzeuge ersten MULTIPART Abschnitt
  CALL METHOD l_client->request->add_multipart
    RECEIVING
      entity = l_entity.

* Art des Inhalts im aktuellen Abschnitt
  CALL METHOD l_entity->set_header_field
    EXPORTING
      name  = 'Content-type'
      value = 'application/x-www-form-urlencoded'.

* Der Inhalt

  DATA l_test TYPE string.

  READ TABLE datei WITH KEY line = '1'.
  IF sy-subrc = 0.
    l_test = datei-data.
  ENDIF.

  CONCATENATE l_test crlf INTO l_test.

* Hänge den Inhalt in den aktuellen Abschnitt
  CALL METHOD l_entity->set_cdata
    EXPORTING
      data = l_test.

*=================================================

* Erzeuge zweiten MULTIPART Abschnitt
  CALL METHOD l_client->request->add_multipart
    RECEIVING
      entity = l_entity.

* Art des Inhalts im aktuellen Abschnitt
  CALL METHOD l_entity->set_header_field
    EXPORTING
      name  = 'Content-type'
      value = 'application/x-ups-binary'.

* Der Inhalt
  READ TABLE datei WITH KEY line = '2'.
  IF sy-subrc = 0.
    l_test = datei-data.
  ENDIF.

  CONCATENATE l_test crlf INTO l_test.

* Hänge den Inhalt in den aktuellen Abschnitt
  CALL METHOD l_entity->set_cdata
    EXPORTING
      data = l_test.

*=================================================

* sending/receiving und FEUER FREI
  CALL METHOD l_client->send
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3
      OTHERS                     = 4.

  m_check_err.

  CALL METHOD l_client->receive
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3.

  m_check_err.

  DATA: response TYPE string.
  response = l_client->response->get_cdata( ).


  DATA http_rc TYPE i.
***http status code
  l_client->response->get_status( IMPORTING code = http_rc ).
  break sapuser.

  dataset = '\\stherp01.sth.local\SAP_DATENTRANSFER\UPS Tagesabschluss Dateien\UEBERTRAGUNG.html'.
  OPEN DATASET dataset FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

  TRANSFER response TO dataset.

  CLOSE DATASET dataset.


Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Aktuelle Forenbeiträge

Ausgabe einer ganzen Work Area?
vor 7 Stunden von ewx 9 / 157

Vergleichbare Themen

HTTP-Post von Dateien in ABAP
von Abrissbirne » 17.09.2012 01:44
HTTPS Verschlüsselung?
von ABAP_User » 20.06.2011 23:20
Business Connector und https !?!
von Gast » 21.12.2004 08:00
MVC, handle_event, Formular POST
von Gast » 08.03.2004 10:51