cancel
Showing results for 
Search instead for 
Did you mean: 

HTTP to RFC error

Former Member
0 Kudos

Dear Expertise,

I am doing an HTTP to RFC scenario.

When sending the payload and other header details(such as ServerHost, port, sender service etc..)from HTTP client I got the following error.

***************************************************************************

Result:

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">

<SOAP:Header>

</SOAP:Header>

<SOAP:Body>

<SOAP:Fault xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>SOAP:Client</faultcode><faultstring>Error during parsing of SOAP header</faultstring><faultactor>http://sap.com/xi/XI/Message/30</faultactor><detail><SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1"><SAP:Category>XIProtocol</SAP:Category><SAP:Code area="PARSER">ITEM_MISSING</SAP:Code><SAP:P1>Envelope</SAP:P1><SAP:P2/><SAP:P3/><SAP:P4/><SAP:AdditionalText/><SAP:ApplicationFaultMessage namespace=""/><SAP:Stack>XML element Envelope missing in SOAP message header (SAP XI Extension)

</SAP:Stack></SAP:Error></detail></SOAP:Fault>

</SOAP:Body>

</SOAP:Envelope>

*******************************************************************************

can some one help me regarding this.

Thanks,

Gujjeti

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Praveen,

just check the source data which you sent from HTTP client and the source data type you have in IR.........i think in your source HTTP client data, you are missing some nodes which are mandatory in your source data type structure in IR....

Thanks,

Rajeev Gupta

former_member181985
Active Contributor
0 Kudos

Dear Rajeev,

I am taking payload from test tab of Message mapping.

If I test the same from RWB-->TestMessage Tab with the neccesary header information I am able to send the message. The same thing is not happening from external broser http client application (which uses java script to send the same header data and payload).

Here is my client application code

****************************************************

<script type="text/javascript">;

<!--

function button1_onclick() {

var result = "Result: ";

var payload = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";

// escape "http://"

var senderNamespace = escape(document.MessageParameters.SenderNamespace.value);

var reqString = "http://"

reqString = reqString + document.MessageParameters.Server.value+":";

reqString = reqString + document.MessageParameters.Port.value + "/sap/xi/engine?type=entry&";

reqString = reqString + "namespace=" + senderNamespace;

reqString = reqString + "&interface=" + document.MessageParameters.SenderInterface.value;

reqString = reqString + "&service=" + document.MessageParameters.SenderService.value;

reqString = reqString + "&party=" + document.MessageParameters.SenderParty.value;

reqString = reqString + "&agency=" + document.MessageParameters.SenderAgency.value;

reqString = reqString + "&scheme=" + document.MessageParameters.SenderScheme.value;

reqString = reqString + "&QOS=" + document.MessageParameters.Qos.value;

reqString = reqString + "&sap-user=bconepi06&sap-password=bconepi";

reqString = reqString + "&sap-client=" + document.MessageParameters.Client.value + "&sap-language=EN";

var xhttp = new ActiveXObject("msxml2.xmlhttp");

xhttp.open ("POST", reqString, false);

document.MessageParameters.URL.value=reqString;

if (document.MessageParameters.Source[0].checked == true) {

payload = document.MessageParameters.xmlData.value;

xhttp.send (payload);

}

else{

var xmlDoc = new ActiveXObject("microsoft.xmldom");

xmlDoc.async=false;

xmlDoc.load (document.MessageParameters.xmlFile.value);

xhttp.send (xmlDoc);

}

result = result + "\n" + xhttp.responseText;

xhttp.close;

document.MessageParameters.response.value=result;

}

//-->

</script>

*****************************************************************

Please Help me

Thanks,

Gujjeti

bhavesh_kantilal
Active Contributor
0 Kudos

When trying to use the HTTP Client, remove the XML declaration from the payload <xml version..> and test it out.

Regards

Bhavesh

former_member181985
Active Contributor
0 Kudos

Dear Bhavesh,

I am removed the XML declaration , Still its not working

thanks,

gujjeti

bhavesh_kantilal
Active Contributor
0 Kudos

You need to provide mroedetails.

What is the error in MONi, What is the status of the Receiver RFC adapter ?

Regards

Bhavesh

Former Member
0 Kudos

Gujjeti,

I suppose you're using the SOAP Sender channel for this test? If so, check the box "Do Not Use SOAP Envelope" in the communication channel.

Kind regards,

Koen

former_member181985
Active Contributor
0 Kudos

Dear Bhavesh,

I am not getting any messages in SXMB_MONI.

May that is not hitting my scenario.

Dear Koen,

Since my scenario is HTTP to RFC there will no Sender channel I suppose. If I am

wrong please correct me.

Thanks all,

Gujjeti

bhavesh_kantilal
Active Contributor
0 Kudos

Go to SXMB_ADM --> Integration engine Configuration --> Specific Configuration and then adding this Parameter LOGGING_SYNC and set the value to 1.

Now you will be able to see the message in MONI.

What is the status of the Receiver RFC adapter?

Regards

Bhavesh

former_member181985
Active Contributor
0 Kudos

Dear Bhavesh,

That setting is already there.

Also Receiver RFC adapter is active and started.

Thanks,

Gujjeti

bhavesh_kantilal
Active Contributor
0 Kudos

Looks like there is a problem with your HTTP Client..

Copy the Code in this link, save it as a .html file and then try with this HTTP Client.

/message/266750#266750 [original link is broken]

Regards

Bhavesh

former_member181985
Active Contributor
0 Kudos

Dear Bhavesh,

I followed up the link and I copied the HTML code and send the same header data and payload.

I am getting the same error to which I raised this thread.

Thanks,

Gujjeti

Former Member
0 Kudos

Gujjeti,

Your URL is incorrect.

document.MessageParameters.Port.value + "/sap/xi/engine?type=entry&";

should be

document.MessageParameters.Port.value + "/sap/xi/adapter_plain";

Kind regards,

Koen

former_member181985
Active Contributor
0 Kudos

Thanks All,

Problem solved.

I am changing the pipeline URL to "http://hostname:8001/sap/xi/engine?type=entry"

Actually It should be "http://eapsdev15062:8001/sap/xi/adapter_plain?"

Also we have to remove XML tag in the payload , since it is already hardcoded in the client java script code.

Thanks a lot for your Bhavesh,

Gujjeti

Answers (3)

Answers (3)

prateek
Active Contributor
0 Kudos

See this

Regards,

Prateek

Former Member
0 Kudos

hi praveen,

what is is input that u are giving? are u sure ur http client is sending the correct input?

refards,

latika.

bhavesh_kantilal
Active Contributor
0 Kudos

Is this a HTTP to SOAP or a RFC scenario?

What doesthe error in MONi state?

Did you get a response back?

Did you check the statusof the receiver adapter in Com Channel Monitoring?

Regards

Bhavesh