cancel
Showing results for 
Search instead for 
Did you mean: 

SOAP Envelope for Webservice Receiver in AEX 7.40

Former Member
0 Kudos

Hello,

in my scenario I want to send data from SPROXY => PI 7.40 AEX => SOAP Webservice.

With SoapUI I testet the messages. The Webservice only except messages in the structure


<soapenv:Envelope xmlns:ns1="http://.../dataservice" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

   <soapenv:Header/>

   <soapenv:Body>

      <ns1:UpdateObject>

         .

          .

           .

      </ns1:UpdateObject>

   </soapenv:Body>

</soapenv:Envelope>

If the <soapenv> are missing the webservcie throws an error.

I configured the CC (Communication Channel) in Adapter Type SOAP Transport Protocol HTTP Message Protocol SOAP 1.1 Adapter Engine CAE with Target URL nothing else.

With this configuration I get no <soapenv> around <ns1:UpdateObject>

I tried also Transport Protocol HTTP(Axis) but this didn't helped. Could be I didn't set it right.

Can someone give me please a clue? What should I do, so the mentioned scenario runs?

Regards

Martin

Accepted Solutions (0)

Answers (5)

Answers (5)

Former Member
0 Kudos

I configurated the integrated configuration in the advanced settings in logging with "Log on error" for Mapping (step AM - After mapping, but before outbound schema validation).

But what i get from your sayings it doesn'T show me the message the webservice is getting?

I there a option to see this?

I will try the hint with the  MessageTransfromBean tomorrow.

regards,

Martin

manoj_khavatkopp
Active Contributor
0 Kudos

To see the soap envelope which is sent via PI you need to configure http parameter in your soap adapter.

To set the content type you can use java mapping where you can set via setcontenttype method.

bhavesh_kantilal
Active Contributor
0 Kudos

Excellent, in that case the issue is definitely something that will get sorted by MessageTransformBean.

When using Do not Use SOAP Envelope, the Content Type is set as application/xml and from your error it looks like the requirement is for the content type to be text.xml.

Set the parameter of messagetransformbean as ,

Transform.ContentType = text/xml;charset=UTF-8


Regards

Bhavesh

Former Member
0 Kudos

Thanks everyone for the response to my problem.

i'm checking you given options.

in addition to my original post. By sending my message with plain SOAP i get the following errormessage


SOAP: Error occurred: com.sap.engine.interfaces.messaging.api.exception.MessagingException: SOAP: Response message contains an errorXIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 415 Cannot process the message because the content type application/xml was not the expected type text/xml; charset=utf-8

regards

Martin

manoj_khavatkopp
Active Contributor
0 Kudos

Try Michael's suggestion from this thread.

Whats the PI version?

bhavesh_kantilal
Active Contributor
0 Kudos

Hello Martin, As the error implies this is a issue with the Content Type.

You can use the Message Transform Bean to set the conext type as "text/xml" as required by your web service,

Inserting MessageTransformBean in Module Processor - Adding Modules to the Module Processor - SAP Li...

Transform.ContentType - text/xml


Regards

Bhavesh

manoj_khavatkopp
Active Contributor
0 Kudos

Bhavesh,

AFAIK We cant change the content type in soap adapter until and unless SOAP envelope is built in mapping i.e  MTB affects only if "Do not use SOAP envelope" is used in channel.

Br,

Manoj

bhavesh_kantilal
Active Contributor
0 Kudos

Hello Manoj, You are indeed right!

The SOAP Adapter by default sets the content type as text/xml and there does not seem to be any option to manipulate this until

  • you form the entire SOAP envelope in your message and use Do Not use SOAP envelope
  • Use SOAP Axis.

Hello Martin,

I am trying to understand your current set up. Are you using a Do Not Use SOAP envelope or are you using your soap adapter without this option? Can you also let us know for which option what is the error triggered?

Regards

Bhavesh

bhavesh_kantilal
Active Contributor
0 Kudos

To add - do check if you need to use SOAP 1.1 or SOAP 1.2? I have a feeling that your webservice requires SOAP 1.2!

Regards

Bhavesh

manoj_khavatkopp
Active Contributor
0 Kudos

Bhavesh,

Isn't the SOAP 1.2 content type is application/soap+xml.

Br,

Manoj

bhavesh_kantilal
Active Contributor
0 Kudos

It is..

Former Member
0 Kudos

He Bhavesh,

I'm using the soap adapter without the option "Do Not Use SOAP Envelope"

and the pi version (Serverversion) is 7.40.33.1.367419

The error (mentioned above) is triggered when sending the message without the option "Do Not Use SOAP Envelope".

regards,

Martin

bhavesh_kantilal
Active Contributor
0 Kudos

The SOAP Envelope would by default be added by the SOAP Adapter. What you require is standard SOAP Adapter functionality where the payload is inserted into the SOAP Body by the SOAP Adapter implicitly. Like Evgeniy has mentioned do check why you think the SOAP Envelope is the issue as that should not be the case until something special is required..

You can use a TCP Gateway to validate your payload that goes out of PI with the SOAP Envelope if required -

Regards

Bhavesh

former_member190293
Active Contributor
0 Kudos

Hi Martin!

How did you find out that SOAP Envelope was missing in your message? Did you get error from web service during end-to-end testing?

Regards, Evgeniy.

Former Member
0 Kudos

Hi Evgenly,

the documentation for the webservice showed me how to build the message.

I first generated the request with SoapUI and the given WSDL from the webservice, in the form i mentioned in the original post.

the payload of the PI message doesnt worked in testing over SoapUI.

Also I get errormessage by testing end-to-end (see reply beneath)

regards

Martin

manoj_khavatkopp
Active Contributor
0 Kudos

Martin,

A plain soap is enough in your case i guess no need to go for AXIS (unless u have NTLM or SOAP 1.2)

Create a simple soap Receiver CC and push the message .

SOAP adapter usually builds a soap envelope around your payload unless and until you have marked "Do not use Soap Envelope" in receiver CC.

If "Do not use Soap Envelope" is marked then you need to make sure that you build a soap envelope in your mapping using java/xslt.

Br,

Manoj