Skip to Content
-1

passing URL parameters using CL_HTTP_CLIENT for POST Method

I have to query an external URL to fetch some data that we have to use in our system.

Now recently the API was changed from GET to that of POST.

Earlier we had maintained the URL parameters directly in the RFC and were able to generate a successful response.

But now since the change in the API when i change the request method to post the QUERY parameters are not being passed to the Service.

For example if i my URL is "XXXX.XXXX.net/v1/oauth2/tokens?grant_type=client-credentials" the service only gets XXXX.XXXX.net/v1/oauth2/tokens. the Query parameters are being truncated by the post request.

I already checked the options in the Post

https://archive.sap.com/discussions/thread/3437183

Any other way forward? to make it work the way it was for the GET Method?

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

3 Answers

  • Posted on Oct 09, 2018 at 10:29 AM
    Add comment
    10|10000 characters needed characters exceeded

    • HI Horst,

      Thank you for your quick reply.

      This is an external service non-SAP that is being called via an RFC(Type G), which uses basic authentication via Client Credentials.

      We have to provide a username and password for authenticating. And on top of that this is an outgoing HTTPS request. which we are instantiating based on the RFC destination that we have configured.

      In the example we are just calling a service and displaying it. But we want to call an external service and process the response and use it in further processing.

      In short is there a way to pass QUERY parameters using the class CL_HTTP_CLIENT. I know that we can pass Header parameters and form parameters via SET_HEADER_FIELD and SET_FORM_FIELD methods. But this external service uses query parameters.

      This is how it looks on postman postman-query-params.png

      The text highlighted in yellow are the query parameters. and are not considered as Header parameters or Form parameters.

      awaiting your valuable feedback.

      Kind Regards,

      Vamsi

  • Posted on Jan 21 at 07:44 PM

    How do I solve it?

    Add comment
    10|10000 characters needed characters exceeded

  • Posted on Feb 04 at 09:31 AM

    The URL parameters can be passed in 2 ways. The below code will give you exactly what you want (as per your postman screenshot).

    1.

    lo_http_client->append_field_url(
    EXPORTING
    name = 'fieldname' " Field Name
    value = 'fieldvalue' " Field Value
    CHANGING
    url = 'lv_url' " URL to which to append the field
    ).

    2.

    lo_http_client->request->set_form_field(
    EXPORTING
    name = 'fieldname' " Name of form field
    value = 'fieldvalue' " Form field value
    ).

    cl_http_utility=>set_request_uri( request = lo_http_client->request
    uri = lv_url ).

    Regards,

    Add comment
    10|10000 characters needed characters exceeded