cancel
Showing results for 
Search instead for 
Did you mean: 

HTTP - SOAP

Former Member
0 Kudos

Hi gurus,

We want to create the following scenario:

HTTP - XI - SOAP

We have test with several combinations of the parameters of the HTTP Adapter Sender and the SOAP Adapter Receiver and we obtain:

java.io.IOException: invalid content type for SOAP: APPLICATION/OCTET-STREAM
at com.sap.aii.messaging.net.MIMEInputSource.readBody(MIMEInputSource.java:363)
at com.sap.aii.messaging.net.MIMEServletInputSource.parse(MIMEServletInputSource.java:58)
at com.sap.aii.af.mp.soap.web.MessageServlet.doPost(MessageServlet.java:359)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)
at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)
at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)
at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)
at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)

or

XIServerUNKNOWN.DeliveryException
com.sap.aii.af.ra.ms.api.DeliveryException: XIServer:CANNOT_READ_PAYLOAD:
at com.sap.aii.adapter.xi.ms.XIEventHandler.onTransmit(XIEventHandler.java:451)
at com.sap.aii.af.ra.ms.impl.core.queue.CallConsumer.onMessage(CallConsumer.java:125)
at com.sap.aii.af.ra.ms.impl.core.queue.Queue.run(Queue.java:831)
at com.sap.engine.frame.core.thread.Task.run(Task.java:64)
at com.sap.engine.core.thread.impl5.SingleThread.execute(SingleThread.java:79)
at com.sap.engine.core.thread.impl5.SingleThread.run(SingleThread.java:150) 

Also we have proven with several modules and parameters in the SOAP Adapter.

The HTTP Service is run (sicf) and SOAP too.

They do not exist mappings, both structures are identical. We test the operation by means of a page HTML with the method post.

In the HTTP Adapter we have checked “Apply URL Parameters” and added the names of the parameters that we will send in the Post.

What can be happening?

Thanks

Accepted Solutions (0)

Answers (8)

Answers (8)

Former Member
0 Kudos

Hi experts,

I sent the data within the URL:

http://host:portABAP/sap/xi/adapter_plain?arg1=value1&arg2=value2&arg3=value3

When I test "POST" the message arrive in XI like attachment (.bin) with the parameters;

- Client HTTP (for example, a page HTML or BSP) must send "PAYLOAD"? Doesn't make the HTTP Adapter automatically?

- How can be done in XI, with a JAVA/XSLT mapping?

I read <a href="http://help.sap.com/saphelp_nw04/helpdata/en/82/f4993c03e0cd37e10000000a11405a/content.htm">this page</a> and say: "The standard exchange format for data in the Integration Engine is XML. However, using the plain HTTP adapter you can also send and receive data in HTML and ASCII. <b>In this case you must use a Java mapping</b>"

- It's say that the HTTP Adapter sends the data in HTML and ASCII and with a JAVA mapping becomes to XML?

<a href="/people/siva.maranani/blog/2005/09/15/push-data-to-mvc-architectured-application-using-xi this blog</a> creating a JAVA mapping, therefore, I deduce that using JAVA mapping would solve my problem.

- Somebody can confirm it?

Former Member
0 Kudos

I have written a note OSS; i will wait answer and I will communicate it.

thanks at all.

Former Member
0 Kudos

I seen the following:

In trace SXMB_MONI:

<Trace level="1" type="B" name="CL_HTTP_PLAIN_INBOUND">
  <Trace level="1" type="T">server-protocol HTTP/1.1</Trace>

but in the Adapters Message Protocol is HTTP 1.0.

I don't understand .

Former Member
0 Kudos

Hi,

I don't understand --> <b>you need to push it from http</b>.

I test <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/40728f7b-0401-0010-d9bc-8c73884a3789">Sending a Mail with CSV File as an attachment-via XI</a> and <a href="/people/siva.maranani/blog/2005/09/03/invoke-webservices-using-sapxi Webservices using SAPXI</a> replacing the Sender Adapter by HTTP Adapter (without configure anything) and SXMB_MONI shown:

XIServer:CANNOT_READ_PAYLOAD

Thanks

Former Member
0 Kudos

Hi,

You need to use the Message Transform Bean to solve this issue.Look into this thread and see Stefan's reply on what needs to be done,.

Also Check this threads which has the same issue:

---Satish

Former Member
0 Kudos

I attempt to explain better:

I use a page .html (POST) in order to invoke a one Web Service.

HTTP Adapter Sync--> Web Service (SOAP)

I configure HTTP Adapter Sender:

<a href="http://es.geocities.com/jsahagung/SDN/HTTPSender.JPG">HTTP Adapter Sender Configuration</a>

I configure SOAP Adapter Receiver:

<a href="http://es.geocities.com/jsahagung/SDN/SOAPReceiver.JPG">SOAP Adapter Receiver Configuration</a>

and

<a href="http://es.geocities.com/jsahagung/SDN/SOAPReceiver-Module.JPG">SOAP Adapter Receiver Configuration</a>

The code of HTML:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Test HTTP Adapter</TITLE>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="http://host:ABAPPort/sap/xi/adapter_plain?namespace=http%3A//calculadora.es
&interface=MI_OUT&service=BS_Sender&QOS=BEhttpclient&sap-user=XXXXXXXXXX
&sap-password=XXXXXXXX&sap-client=XXX">
OPER1: <INPUT TYPE="text" NAME="OPER1"><BR>
OPER2: <INPUT TYPE="text" NAME="OPER2"><BR>
OPERATOR: <INPUT TYPE="text" NAME="OPERATOR"><BR><BR>
<INPUT TYPE="submit">
</FORM>
</BODY>
</HTML>

Well, with this configuration, the error that shows is: “CANNOT_READ_PAYLOAD”.

If I delete module "localejbs/AF_Modules/MessageTransformationBean" and checked "Do not Use SOAP Envelope" the error that shows is: "invalid content type for SOAP: APPLICATION/OCTET-STREAM".

I don't mapping.

The content-type of request is application/x-www-form-urlencoded (SXMB_MONI)

My questions are:

1 - What is wrong?

2 - How I must to configurate communication channel so that the scenario works?

3 - Is Message Mapping with Java mapping necesary?

4 - Are there any blog with this scenario?

5 - The HTTP Adapter automatically doesn't transform request HTTP into XML/XI?

Former Member
0 Kudos

no need to configure sender http adapter

3 - Is Message Mapping with Java mapping necesary?

>>depends on the logic you have to implement in mapping.

The HTTP Adapter automatically doesn't transform request HTTP into XML/XI

>> you need to push it from http

Former Member
0 Kudos

Hi,

Can you plz check the SOAP Response with the XMLSpy by sending the data with Webserive and get the response.

Regards

Chilla

bhavesh_kantilal
Active Contributor
0 Kudos

Hi,

Looks like the Webservice is sending back a response which is invalid and does not have content type as text / xml.SOAP adapter in XI expects the response as text / xml.

Juust check the response payload using the TCP gateway tool and then check what the response format is and check if this is text / xml?

Regards

Bhavesh

Former Member
0 Kudos

Hi

I think u should provide more information like how do u configure your commincation channel and the mapping file. i suppose there is some issue with mapping.

cheers

nag