cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Sender Rest adapter Get operation processing

Former Member
3,834

Hi All,

I have a scenario where I need to host a REST service using GET operation and there are 2 optional parameters (let's call them a and b).

Since this is GET operation, I am not expecting any HTTP payload in body. I have configured the sender rest channel to convert data to XML and add wrapper of Message type name (refer screenshots). I have done request mapping to hard code a few parameters.

However, if I send a GET message to the service using a rest client with no payload, I receive an error (MP: exception caught with cause com.sap.aii.adapter.xi.routing.RoutingException: Unable to parse XML message payload to extract operation for receiver determinationorg.xml.sax.SAXParseException: Premature end of file.). PI doesn't seem to like empty HTTP body even in case of GET operation.

Also noticed that:

  1. REST adapter does not add the wrapper element to the request message, if there is no content in body. I would have though it would create an empty root level tag with message type name.
  2. If I change the option to POST and pass {}, as HTTP body, my interface works fine.

Am I doing something wrong here?

Regards,

Sanjeev.

Message was edited by: Sanjeev Shekhar Singh

Accepted Solutions (1)

Accepted Solutions (1)

bhavesh_kantilal
Active Contributor
0 Likes

I dont have a REST adapter on my landscape and hence while not a direct answer, Why not use the plain HTTP_AAE Adapter with the GET method?

Former Member

Thanks Bhavesh,

I have to return the response as JSON and also response volume is a bit high, so didn't want to tinker around with Java mapping too much to perform conversion. But I agree, this is an alternative.

My main intention was to understand if this is the intended behavior of rest adapter (not handling empty payload for GET operation), or am I doing something wrong in the configuration.

Regards,

Sanjeev

bhavesh_kantilal
Active Contributor

I definitely understand the need to use a Standard Approach. Would have also done the same.

What you require from the REST Adapter that it accepts a Empty Payload for a HTTP GET seems to be a valid ask! From the looks of your error, it doesnt seem to be acceptable to PI ( I wish I could try this ) and hence a OSS to SAP might be the answer

Regards

Bhavesh

bhavesh_kantilal
Active Contributor
0 Likes

I just checked my notes for a previous REST Demo and I was actually able to use a REST Scenario with a GET call with no payload.Below is what my configuration looks like,

Is this the same configuration you use? If yes,Would suggest if there are any patches around the same, have a look on Service Market Place.

bhavesh_kantilal
Active Contributor
0 Likes

Sorry for multiple responses but have you set the Operation Determination in your REST Adapter?

Former Member
0 Likes

Thanks Bhavesh,

I haven't tried the Operation Determination part. Will check it tomorrow and update the thread with results.

Thanks,

Sanjeev

Former Member
0 Likes

Bang on Bhavesh. Using Operation determination did the trick.

Thanks,

Sanjeev.

Answers (1)

Answers (1)

Snavi
Active Participant
0 Likes

Hi Sanjeev,

you need to define the parameters in REST resources in the sender channel

in the runtime the parameters will be available in the dynamic configuration and you need to extract these in your mapping

you don't have to send any payload, the parameters will be supplied in the url

Former Member
0 Likes

Thanks Navdeep,

I have tried with the query parameters, but didn't have much luck. May be operation determination is the missing bit, as Bhavesh has indicated.

Regards,

Sanjeev