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 a comment
10|10000 characters needed characters exceeded

Related questions

2 Answers

  • Posted on Oct 09, 2018 at 10:29 AM
    Add a 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 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 a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.