cancel
Showing results for 
Search instead for 
Did you mean: 

How to capture response in sync HTTP-AAE adapter

Former Member
0 Kudos

Hi Experts,

This is a sync scenario from ECC (Outbound Proxy) <<==SAP PI==>> WEBSITE

1.Sender : ECC 6.0 Proxy XML.Request will be in the form.

<CONVERT>

<CLIENT_ID></CLIENT_ID>

<EXCH></EXCH>

<EXPR></EXPR>

</CONVERT>

2.Receiver : WEBSITE for currency exchange

           It provides services through FXML which is a scriptable,XML-based markup language for constructing Java object graphs.

           Clients can access receiver FXML service using a POST option to a particular URL.Response structure would contain the below fields.

  <RESPONSE>

  <EXPR> <EXPR />

  <EXCH> <EXCH />

  <AMOUNT> <AMOUNT />

  <NPRICES>  <NPRICES />

  <CONVERSION>  <CONVERSION/>

  </RESPONSE>

 

I opted for receiver adapter as HTTP-AAE (http://help.sap.com/saphelp_nw73ehp1/helpdata/en/e4/a451e997364386a1f6f090c9ea17b6/frameset.htm).

Parameter Tab -> Advance Tab -> Header Fields : I entered the request fields like client_id,exch,expr etc which should be the message type(ESR) of the request .

Advance tab -> Set Adapter-Specific Message Properties -> HTTP Header Fields (Synchronous Response) i.e.Header Field One,Header Field Two,.

I entered the Response fields like EXPR,EXCH.

While executing the test message from SPROXY in ECC, I received the following error.

com.sap.aii.adapter.http.api.HttpAdapterException: ERROR_OUTBOUND_PROCESSING, while trying to invoke the method com.sap.engine.interfaces.messaging.api.Message.setMessageProperty(com.sap.engine.interfaces.messaging.api.MessagePropertyKey, java.lang.String) of an object loaded from local variable 'xiMessage'.

If there is any discrepancy in the approach please suggest to implement the solution.

Regards

Rebecca

Accepted Solutions (1)

Accepted Solutions (1)

markangelo_dihiansan
Active Contributor
0 Kudos

Hello Rebecca,

You first need to have a successful request to Oanda and then analyze that request using an HTTP sniffer tool like fiddler, etc. There, you will be able to see what the website requires in the HTTP Header and Body. Only then will you be able to try to replicate that request in PI

To give you an example, here is an HTTP POST description for stock quotes

From here, you can see that the content type should already be application/x-www-form-urlencoded

and that the XML message sent from an ABAP Proxy for example, should be converted to just symbol=string (not displayable in tree view since it is not XML).

Ask for their service description too 

Hope this helps,

Mark

Answers (4)

Answers (4)

Former Member
0 Kudos

Hello Rebecca, I've worked on a similar scenario. I used Transport protocol HTTP with Message Protocol GET. Instead of specifying Header fields, I selected Additional Query Parameters in the Advanced Tab and provided something like this:

Furthermore, the settings in the General Tab for connection to OANDA were as follows:

Try configuring your channel accordingly and see if it works for you.

Former Member
0 Kudos

Hi ayush,

Can you please provide some more details of this solution.

Thanks

Nikhil

nageswararao_v2
Participant
0 Kudos

Hello Ayush,

I'm trying to do one POC with HTTP_AAE using GET method (receiver side) where I need to access a public web site (in this case - Currency Converter provided by www.webservicex.net), Can you please clarify me what needs to provide in parameter "Main Payload Parameter Name" and also kindly guide me what and all need to be configured for this kind of development.

Thanks in advance,

Nagesh

Former Member
0 Kudos

Dear users,

we have requirement sending SMS to the customers mobiles. I am successfully sending the messages to the customers mobiles by using the above method. Facing issues with response message. The response messages is in plain text fromat in single line like...Sent

Using HTTP_AAE Receiver adapter.

The response message was failed while excution of the message mapping with the error

Mapping failed in runtimeRuntime Exception when executing application mapping program com/sap/xi/tf/_MM_SMS_CUST_RES_; Details: com.sap.aii.utilxi.misc.api.BaseRuntimeException; Content is not allowed in prolog.


please share the comments how to pass the Status of the message to SAP ECC from SAP HTTP adapter


Regards,

Sudhir

markangelo_dihiansan
Active Contributor
0 Kudos

Hi,

Since you are using message mapping, the response message needs to be converted to XML. first before passing it into the message mapping. You can do this via a simple Java Mapping/XSLT program.

Regards,

Mark

former_member317957
Participant
0 Kudos

Thanks ...got the response...by using java mapping.

Former Member
0 Kudos

Hi Rebecca,

Did you get this resolved. I am running into the same issues with the Oanda interface.

can you help out with the solution you implemented.

Thanks

Nikhil

Former Member
0 Kudos

Hi Rebecca,

You can use HTTP GET method with Oanda service. Set the URL parameter with Dynamic Configuration in message mapping and check "Set Adapter-specific Message Properties". Then check "URL Parameters". Enter "URLParamOne"  in the entry field for URLParamOne.

The response from Oanda is a XML message with the structure you provided in your message. Hope this helps.

Former Member
0 Kudos

Hi Rebecca,

I have got the same requirement. I have used the Java Class URLConnection to call the OANDA FXML service from a java map (called the URL using GET Method) and formulated the response in a format to post multiple IDOCs (one for each exchange rate).

Thanks

Rakesh

arkesh_sharma
Active Participant
0 Kudos

Hi Rakesh,

I have similar requirement where I need to send a HTTP request, capture the response and then format the response message for further processing.

Can you please guide me and provide me some links how to proceed with this kind of java maping?

I have always used my java maps to format XMLs and add contents to it as a text but in this case I am finding it to be a bit tricky.

Any guidance and help in this regard would be really useful for me.

Thanks,

Arkesh

Former Member
0 Kudos

Hi Arkesh,

Write a Java mapping and use the Class URLConnection to call the HTTP URL in java mapping (call the URL using GET Method) and formulate the response as per your requirement in Java mapping.

Thanks

Rakesh

Former Member
0 Kudos

Hi Rakesh,

Can you provide some more details for this solution

Thanks

Nikhil

Former Member
0 Kudos

Hi Rakesh,

I have a quick question.

I did the Java mapping to call the url and formulate the response.

Do I need a comm channel still if no then how to bypass the outbound binding step in the ICO.

Thanks

Nikhil

nageswararao_v2
Participant
0 Kudos

Hi Rakesh,

I got a similar requirement where I need to call public website using HTTP_AAE - GET method, since I'm new bee to HTTP_AAE adapter usage could you please guide me on this.

In my POC I'm trying to use the currency converter from www.webservicex.net, I'm not sure how can I pass my input payload values in target request and what are the required configuration need to do for this kindly guide me.

Thanks in advance...

Regards,

Nagesh