SOAP Header issues
1. I am using ADOBE Acrobat Professional 7.0 to create PDF Application.
2. I want to call web service from PDF Form ( Not RPC type)
3. Herewith I am attaching all my samples.
I want the out put like testsoapspipcdr.xml ( refer the attachment )
I am getting the out put like pdfform.xml
The script I am using is attached here - script.txt
Please let me know how should I get the right output like "testsoapspipcdr.xml"
Script.txt
var CNAMessage = xfa.data.saveXML();
xfa.host.messageBox(CNAMessage);
var cURL = "http://localhost:9081/ECMSpecialtyWeb/services/CNARouterPort";
var NS = "http://schemas.xmlsoap.org/ws/2004/08/addressing:";
var oHeader = {};
oHeader[NS + "To"] =
soapType: "",
soapValue: "com.cna.app.ecmspecialty.producer.CfECMSpecialtyProducerImpl"
var oResultHeader = {};
var oRequest = {};
oRequest[""+""] = {soapType: "",soapValue:"<test></test>"};
var response = SOAP.request(
cURL: cURL,
oRequest: oRequest,
cAction: "http://testurl.com",
oReqHeader: oHeader,
oRespHeader: oResultHeader
pdfform.xml ( This is what I am getting )
<SOAP-ENV:Header>
<ns0:To SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://schemas.xmlsoap.org/ws/2004/08/addressing" xsi:type="">com.cna.app.ecmspecialty.producer.CfECMSpecialtyProducerImpl</ns0:To>
</SOAP-ENV:Header>
testsoapspipcdr.xml ( expected format )
<soapenv:Header>
<wsu:Timestamp xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:cnaUtility="http://www.cna.com/services/runtime/utility">
<Created cnaUtility:Sender="MXPCHWKAMSU" xmlns="">Fri Nov 11 16:18:18 CST 2005</Created>
</wsu:Timestamp>
<wsa:To cnaAddressing:packageName="CNACSPIServicePackage1" cnaAddressing:serviceName="FindPPCAddresses" cnaAddressing:versionName="1" cnaAddressing:consumerType="DEFAULT" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:cnaAddressing="http://www.cna.com/services/runtime/addressing">com.cna.app.ppc.prod ucer.CfSPIPPCProducerImpl</wsa:To>
<wsa:RelatesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">uuid:NFAD2890030111DAB20AC9B 618A69ADD</wsa:RelatesTo>
<wsa:MessageID xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">uuid:NFAD2890030111DAB20AC9B 618A69ADD</wsa:MessageID>
<serviceConsumer:serviceConsumer xmlns:serviceConsumer="http://services.cna.com/serviceConsumer">
<cnaApplicationName xmlns="">SampleConsumer</cnaApplicationName>
<cnaLanguage xmlns="">en</cnaLanguage>
<cnaLocale xmlns="">US</cnaLocale>
<cnaConsumerPlatform xmlns="">WAS</cnaConsumerPlatform>
<cnaAddressing:cnaLogLevel xmlns:cnaAddressing="http://www.cna.com/services/runtime/addressing">-1</cnaAddressing:cn aLogLevel>
<cnaCheckPermission xmlns="">false</cnaCheckPermission>
</serviceConsumer:serviceConsumer>
<ExtensionHeader xsi:nil="true" xmlns="http://services.cna.com/extHeader" />
</soapenv:Header>
Your message serialization is not SOAP 1.2 compliant. Unless you have access to the Acrobat source code so that you can re-write Acrobat to comply with the way your web service is setup, you'll need to modify your web service to make it SOAP 1.2 compliant.
http://www.w3.org/TR/soap12-part1/
> soapValue:"<test></test>"
As a note, I see you are trying to include extra tags in your message data. You can't do this. Acrobat will strip any superfluous XML tags when it generates the request.
Similar Messages
-
How do I access the DCJMS* variables in my response SOAP:Header ?
Hi all,
I have set up a sync / async Integration Process in XI
This is initiated by a SAP R/3 transaction that calls a synchronous function to enter XI
Once in the Bridge, a JMS receiver adapter sends out an asynchronous request message from XI to MQ
A correlation allows the JMS sender adapter to return an asynchronous response message from MQ to XI back into my the Integration Process
I have set up the JMS sender adapter configuration to return the DC (dynamic configuration) variables in the <SOAP:Header> of the XI response message along with the payload
You can see that the DCJMS* variables are returned below
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!--
Response
-->
- <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SAP="http://sap.com/xi/XI/Message/30">
- <SOAP:Header>
+ <SAP:Main xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" versionMajor="003" versionMinor="000" SOAP:mustUnderstand="1" wsu:Id="wsuid-main-92ABE13F5C59AB7FE10000000A1551F7">
+ <SAP:ReliableMessaging xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
+ <SAP:HopList xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
+ <SAP:RunTime xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
+ <SAP:PerformanceHeader xmlns:SAP="http://sap.com/xi/XI/Message/30">
- <SAP:DynamicConfiguration xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSCorreleationID">40D982A0-B19D-11DB-9508-0002A5D5916B</SAP:Record>
<SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSTimestamp">1170297456940</SAP:Record>
<SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSMessageID">ID:414d5120514d4430312020202020202045c12b962001dd02</SAP:Record>
</SAP:DynamicConfiguration>
- <SAP:Diagnostic xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:TraceLevel>Information
<b>Question</b>
I want to access the DCJMS* variables but am not sure how to go about it as the
variables exist in the <SOAP:Header>?
I followed the SAP documentation to access adapter-specific attributes (refer to link http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm )
I have used the following code to create a user-defined function for the accessing adapter specific attributes (similar to the link)
public String Get_Msgid(Container container){
DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get
(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key = DynamicConfigurationKey.create
("http://sap.com/xi/XI/System/JMS","DCJMSMessageID");
String jmsMsgID = conf.get(key);
return jmsMsgID;
<b>Question</b>
Do I use message mapping to extract the DCJMS* variables?
<b>Question</b>
If so then which message is used for the source message so that I can access the <SOAP:Header>? Eg do I use the response message type or is there a trick to accessing the SOAP:Header?
<b>Question</b>
Do I use the user-defined function (like above)?
I performed the following steps
Opened the message mapping in edit mode
Created the user-defined function using the graphical editor
Saved the message mapping
I have not connected the user-defined function to any of the xml tags in either the source or target messages
When I go to test the message mapping I am getting the following error
Compilation process error : CreateProcess: null\bin\javac -J-Xmx256m @E:/usr/sap/XID/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Mapd79a7bf0b65611dbaf390002a5d5916b/O1170817003886.txt @E:/usr/sap/XID/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Mapd79a7bf0b65611dbaf390002a5d5916b/S1170817003886.txt error=2
STACKTRACE:
com.sap.aii.ib.core.mapping.exec.ExecuteException: Compilation process error : CreateProcess: null\bin\javac -J-Xmx256m @E:/usr/sap/XID/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Mapd79a7bf0b65611dbaf390002a5d5916b/O1170817003886.txt @E:/usr/sap/XID/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Mapd79a7bf0b65611dbaf390002a5d5916b/S1170817003886.txt error=2
at com.sap.aii.ib.server.mapping.exec.ServiceUtil.compileSourceCode(ServiceUtil.java:207)
at com.sap.aii.ib.server.mapping.exec.ServiceUtil.compile(ServiceUtil.java:156)
at com.sap.aii.ibrep.server.mapping.ServerMapService.compileSourceCode(ServerMapService.java:361)
at com.sap.aii.ibrep.server.mapping.ServerMapService.compileSourceCodeWithoutAndWithArchives(ServerMapService.java:301)
at com.sap.aii.ibrep.server.mapping.ServerMapService.execute(ServerMapService.java:153)
at com.sap.aii.ibrep.sbeans.mapping.MapServiceBean.execute(MapServiceBean.java:52)
at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0.execute(MapServiceRemoteObjectImpl0.java:259)
at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0p4_Skel.dispatch(MapServiceRemoteObjectImpl0p4_Skel.java:146)
at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:304)
at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:193)
at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:122)
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)
A thread in the SDN (Error while Activating Message Mapping, Posted: Jan 9, 2007 3:32 PM) suggests checking the java path on the XI machine
This is JAVA_HOME=C:\j2sdk1.4.2_08 and seems ok
<b>Question</b>
Do you know why I would get the compilation error?
Any assistance would be appreciated
Regards,
MikeJin,
My compilation issue has gone via a SAP recommendation to specify the JDK home directory in the instance profile
Back to the mapping - I can now run my scenario
<b>Source message</b>
The response message has the following <SOAP:Header> from which I want to extract the DCJMSCorreleationID (note that it's misspelt)
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- Response
-->
- <SAP:DynamicConfiguration xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSCorreleationID">40D982A0-B19D-11DB-9508-0002A5D5916B</SAP:Record>
<SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSTimestamp">1170297456940</SAP:Record>
<SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSMessageID">ID:414d5120514d4430312020202020202045c12b962001dd02</SAP:Record>
</SAP:DynamicConfiguration>
<b>Grahpical mapping</b>
LHS - Response message with occurrance 0..1 so it is not connected to my UDF
UDF Get_Corrid with no inputs
RHS - The UDF output is connected to the Acknowledgement msg tag <ACK>
<b>UDF</b>
DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get
(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key = DynamicConfigurationKey.create
("http://sap.com/xi/XI/System/JMS","DCJMSCorreleationID");
String Corrid = conf.get(key);
return Corrid;
<b>Target message</b>
The idea is to copy the correlation id of the response message into the acknowledgement message. But as you can see the result is NULL
<?xml version="1.0" encoding="utf-8" ?>
- <ns2:AWB0020_MARKET_DATA_RESPONSE_ACK xmlns:ns2="http://awb.com.au/mq/tx/MarketData">
<ACK>null</ACK>
</ns2:AWB0020_MARKET_DATA_RESPONSE_ACK>
Please advise
Thanks Mike -
Calling Web Service with SOAP header from BPEL
Hi,
I am calling a web service (with header information) from BPEL. In the Invoke activity, i created a header variable to pass the header information.
But, when i test the BPEL service, invoke activity fails because the header information is not being passed.
Below is the error message (copied from clipboard).
+<messages><input><Invoke_1_getsubinfo_InputVariable><part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="parameters"><getsubinfoElement xmlns="http://ws/its/tabs/webservices/SingleRowWS/SingleRowWS.wsdl">+
+<pSubnoin>+
+<insubno>12345678</insubno>+
+</pSubnoin>+
+</getsubinfoElement>+
+</part></Invoke_1_getsubinfo_InputVariable></input><fault><bindingFault xmlns="http://schemas.oracle.com/bpel/extension"><part name="summary"><summary>exception on JaxRpc invoke:+
start fault message:+
Internal Server Error (Caught exception while handling request: javax.xml.rpc.JAXRPCException: Not authenticated user)+
*:end fault message*</summary>
+</part></bindingFault></fault></messages>+
As said, no header information is visible in the Invoke activity.
Please provide help for the above issue.
-MJHello Patrick,
Thanks for the response. I am using normal assign activity to assign values to the header variable as shown below. HeadMT is the header variable which is passed in the invoke activity.
+<assign name="Assign_Header">+
+<copy>+
+<from expression="'tkl12'"/>+
+<to query="/ns1:LOGIN_INFO/ns1:USER_NAME" variable="*HeadMT*"+
part="payload"/>
+</copy>+
+<copy>+
+<from expression="'tkl123'"/>+
+<to query="/ns1:LOGIN_INFO/ns1:PASSWORD" variable="*HeadMT*"+
part="payload"/>
+</copy>+
+<copy>+
+<from expression="'TKL'"/>+
+<to query="/ns1:LOGIN_INFO/ns1:CHANNEL_ID" variable="*HeadMT*"+
part="payload"/>
+</copy>+
+</assign>+
The expected input by the web service is as below with the header information highlighted.
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ws/webservices/RowWS/RowWS.wsdl">+
+*<soap:Header>*+
+*<ns1:LOGIN_INFO>*+
+*<ns1:USERNAME>tkl12</ns1:USERNAME>*+
+*<ns1:PASSWORD>tkl123</ns1:PASSWORD>*+
+*<ns1:CHANNEL_ID>TKL</ns1:CHANNEL_ID>*+
+*</ns1:LOGIN_INFO>*+
+*</soap:Header>*+
+<soap:Body>+
+<ns1:substatusElement>+
+<ns1:pInparam>+
+<ns1:insubno>7674988</ns1:insubno>+
+</ns1:pInparam>+
+</ns1:substatusElement>+
+</soap:Body>+
+</soap:Envelope>+ -
Unable to add custom SOAP header to consumer webservice in CRM( without using PI)
Hello Experts,
We have a requirement to consume webservice proxy in CRM without involving PI. We have WSDL file which has many services as depicted in the first screenshot.After checking old posts, I could add custom SOAP header by using if_wsprotocol_ws_header and there is no xml parsing error for ws_header.Have used if_ixml_stream_factory to check xml parsing error for header.
'<soapenv:Header>'
'<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">'
'<wsse:UsernameToken wsu:Id="UsernameToken-2">'
'<wsse:Username>user id</wsse:Username>'
'<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">paswd</wsse:Password>'
'<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">MT0B9XFzsZJXXKmVKOsj/Q==</wsse:Nonce>'
'<wsu:Created>2015-03-30T06:29:17.407Z</wsu:Created>'
'</wsse:UsernameToken>'
'</wsse:Security>'
'</soapenv:Header>' INTO l_string.
But when my ABAP program as a whole gets executed where consumer proxy is called, then it still throws XML parsing error - undeclared namespace prefix. As mentioned, there is no parsing error for header and WSDL file as a whole in SOAP UI tool works fine,by manually adding SOAP header.
Have configured SOAMANAGER with logical port.Or any wrong setting in SOAMANAGER can cause this issue? When I tested webservice ping, it gave me attached error but I read in a SAP note that such error can be ignored.
I want to know if some more setting/coding is required if we manually add custom header to a payload? Is PI really required to implement this requirement? Payload mapping has to be done to add custom header and if that can be taken care by ABAP coding and how?
Can you please help?
BR,
Nisha VermaHello Experts,
I have not found the solution yet.
Can anyone provide some insight??
BR,
Nisha Verma -
SOAP Header in SOAP Receiver adapter
Hi All,
I am doing a Proxy to Webservice scenario where webservice requires the SOAP request as below.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<mh:CustomHeader xmlns:mh="http://schemas.test.com/customHeader">
<mh:MessageData>
<mh:MessageId>12345</mh:MessageId>
<mh:Timestamp>2004-06-09T14:41:44Z</mh:Timestamp>
</mh:MessageData>
</mh:CustomHeader>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext">
<wsse:UsernameToken>
<wsse:Username>test</wsse:Username>
<wsse:Password>test123</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
</SOAP-ENV:Body>
Need your help to understand how can we achieve this using Standard SOAP adapter to customize the Header part as it requires to include "<mh:CustomHeader " & "UsernameToken".
Or Do i need to go for adapter module development to create this SOAP request.
Please provide your suggestion to achieve this scenario.
Thanks & regards
Ashwin
Edited by: ashwin dhakne on May 17, 2010 5:32 PMHi all,
Created a below target payload in a message mapping with SOAP Header & Body part as per the requirement.
In SOAP receiver communication channel, checked the option " Do Not Use SOAP Envelope".
But while executing an sceanrio, i am facing an error in SOAP receiver channel as Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 500 Internal Server Error
And if i don't check the option " Do Not Use SOAP Envelope" it gives an error as
Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: Unable to obtain service binding,error=Payload Envelope is not a known message for TestWebserviceService.
Please provide your suggestions to handle this issue.
<?xml version="1.0" encoding="UTF-8" ?>
<ns1:Envelope xmlns:ns1="http://schemas.test.com/CustomrHeader">
<ns1:Header>
<ns1:CustomrHeader>
<ns1:MessageData>
<ns1:MessageId>Constant</ns1:MessageId>
<ns1:Timestamp>Constant</ns1:Timestamp>
</ns1:MessageData>
<ns1:Security>
<ns1:UsernameToken>
<ns1:Username>Constant</ns1:Username>
<ns1:Password>Constant</ns1:Password>
</ns1:UsernameToken>
</ns1:Security>
</ns1:CustomrHeader>
</ns1:Header>
<ns1:Body>
<ns1:Details>
<ns1:Information>
<ns1:Title>Test</ns1:JobTitle>
</ns1:Information>
<ns1:Contacts>
<ns1:Street>Test Drive</ns1:Street />
</ns1:Contacts>
</ns1:Details>
</ns1:Body>
</ns1:Envelope>
Thanks
Ashwin
Edited by: ashwin dhakne on May 18, 2010 5:47 PM
Edited by: ashwin dhakne on May 18, 2010 5:48 PM
Edited by: ashwin dhakne on May 18, 2010 5:48 PM -
Query reg adding custom tags in SOAP Header - AXIS Receiver Adapter
Hi All,
I need to send custom tags as mentioned below to my traget webservice application. I think I can do this with Receiver AXIS adapter but not sure how it can be done. Can any of you suggest?
<WSContext>
<FromAppId>ABC</FromAppId>
<ToAppId>XYZ</ToAppId>
</WSContext>
Thanks,If you want to add custom tags in the soap header, one possible solution is use XSLT mapping or Java mapping to create header first then do message mapping for mapping the payload structure between your source and target as usual.
So in operation mapping you sequence mapping like this... first XSLT mapping for custom tags for the SOAP Header followed by payload mapping.
Hope that helps.
Search SDN for XSLT Mapping for soap header. Already we have handled these issues. -
Accessing XI SOAP Header in Mapping
We want to access the SOAP envelope information in the XI mapping. We need to query some values based on the following XPath:
/SOAP:Envelope/SOAP:Header/SAP:HopList/SAP:Hop/SAP:Engine
Is there a way to access the XI SOAP Header? Can we do this through a User defined function? Another option we have is to get the Host name through Java. But accessing the SOAP Header would probably add some more value - especially if we need to access other values.
Based on the integration server value, we need to do different mapping for certain fields. We can use Value Mapping.
Thanks,
Jay Malla
Licensed To Code
Genentech SAP XI TeamHello Jay,
Did you solved your issue? I have the same problem and don't know how to find a solution.
If you did, please contact me. My e-mail is [email protected]
Regards -
Consume web service in ABAP proxy with SOAP header
Hi Thomas ,
I am trying to consume web service in ABAP . I have followed the procedure from one of your web blog <a href="/people/thomas.jung3/blog/2004/11/17/bsp-a-developers-journal-part-xiv--consuming-webservices-with-abap a Developer's Journal Part XIV - Consuming WebServices with ABAP</a> . (640 release).
I need to pass SOAP header along with SOAP body. As you mentioned I have used if_wsprotocol_ws_header interface to pass header but it is still failing.
Please see below code and please give some direction to fix the issue.
1.Create ABAP proxy for WSDL (http://ws.strikeiron.com/SwanandMokashi/StockQuotes?WSDL). It has created structures only for SOAP body.
2.Create Logical port
3.Create following program to call proxy
REPORT zproxy.
DATA: ref_stock TYPE REF TO zzco_stock_quotes_soap ,
ws_header TYPE REF TO if_wsprotocol_ws_header,
name TYPE string,
namespace TYPE string.
TRY.
CREATE OBJECT ref_stock
get WS_HEADER protocol
ws_header ?= ref_stock->get_protocol('IF_WSPROTOCOL_WS_HEADER').
set somehow header as iXML-DOM tree
DATA: ixml TYPE REF TO if_ixml,
xml_document TYPE REF TO if_ixml_document,
xml_root TYPE REF TO if_ixml_element,
xml_element TYPE REF TO if_ixml_element,
xml_node TYPE REF TO if_ixml_node.
DATA l_xstring TYPE xstring.
DATA l_string TYPE string.
FIELD-SYMBOLS <fs_xstring> TYPE xstring.
Additional Header:
CONCATENATE
'<soap:Header>'
'<s1:LicenseInfo xmlns:s1="http://ws.strikeiron.com">'
'<s1:RegisteredUser>'
'<s1:UserID>[email protected]</s1:UserID>'
'<s1:Password>aaaaaaaa</s1:Password>'
'</s1:RegisteredUser></s1:LicenseInfo>'
'</soap:Header>' INTO l_string.
convert to xstring
l_xstring = cl_proxy_service=>cstring2xstring( l_string ).
IF NOT l_string IS INITIAL.
create iXML DOM document from XML xstring
CALL FUNCTION 'SDIXML_XML_TO_DOM'
EXPORTING
xml = l_xstring
IMPORTING
document = xml_document
EXCEPTIONS
invalid_input = 1
OTHERS = 2.
IF sy-subrc = 0 AND NOT xml_document IS INITIAL.
xml_root = xml_document->get_root_element( ).
xml_element ?= xml_root->get_first_child( ).
add header element by element to SOAP header
WHILE NOT xml_element IS INITIAL.
name = xml_element->get_name( ).
namespace = 'http://swanandmokashi.com' . "xml_element->get_namespace_uri( ).
IF NOT xml_element IS INITIAL.
ENDIF.
ws_header->set_request_header(
name = name
namespace = namespace
dom = xml_element ).
xml_element ?= xml_element->get_next( ).
ENDWHILE.
ENDIF.
ENDIF.
CATCH cx_ai_system_fault .
ENDTRY.
*Call soap body using abap proxy class.
DATA: get_quotes TYPE zzget_quotes_soap_out .
DATA: get_quotes1 TYPE zzget_quotes_soap_in .
get_quotes1-quote_ticker = 'GE'.
TRY.
CALL METHOD ref_stock->get_stock_quotes
EXPORTING
get_quotes1 = get_quotes1
IMPORTING
get_quotes = get_quotes.
CATCH cx_ai_system_fault .
CATCH cx_ai_application_fault .
ENDTRY.
4.It is throwing cx_ai_system_fault error.
SOAP details:
Input:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding" >
<soap:Header>
<s1:LicenseInfo xmlns:s1="http://ws.strikeiron.com">
<s1:RegisteredUser>
<s1:UserID>[email protected]</s1:UserID>
<s1:Password>aaaaaaaa</s1:Password>
</s1:RegisteredUser>
</s1:LicenseInfo>
</soap:Header>
<soap:Body>
<tns:GetQuotes xmlns:tns="http://swanandmokashi.com">
<tns:QuoteTicker>GE</tns:QuoteTicker>
</tns:GetQuotes>
</soap:Body>
</soap:Envelope>
Thanks,
Kavitha.Hi ,
Thank you for the response. Did you passed user email and password ([email protected] /aaaaaaaa) part of licenseinfo->resisteredUser along with Quoteticker GE in analyzer?
<a href="http://www.strikeiron.com/Analyzer/OnlineAnalyzer.aspx?WSDL=http://ws.strikeiron.com/SwanandMokashi/StockQuotes?WSDL">ANALYZER</a>
Thanks,
Kavitha. -
Split-Join, unable to set SOAP:HEADER in OSB at Invoke Service Component.
Hi Experts,
i created a Split-join for parallel processing and invoke third party services, but this service requires some mandatory elements in soap:header like WS-Addressing and, WSA-TO and some security infomation, but i don't know how to pass header in invoke service step. Please help me to setup Header for Invoke services in split join.
Please help me to resolve this issue.
Thanks
Ankitsee this :https://forums.oracle.com/thread/951618
not the most fancy way, but you can create some sort of wrapper proxyservice in front of your business service to make it work -
How do pass the UserID and Password in the SOAP header for web services
I am encountering issues trying to pass the userid and password in the SOAP header when consuming a 3rd party web service. Rostewitz posted something similiar but I don't know how to type iv_xml. Any help would be greatly appreciated.
Thank you,
jpinaIt helps to post a link to a thread when you refer to it. If you are trying to implement that solution though, you can look at the parameter of the corresponding method being called. The parameter has type 'SIMPLE' which means that it is compatible with all of the predefined elementary ABAP types. In this case, you should use 'STRING'.
-
How to set wsse:security SOAP header in soa 11g?
Hi,
we are facing an issue with invoking a secured webservice.
we tried 3 things
1.) set the username/password in em under reference properties
2.) Created a schema, set the username/password and included it in partner link header tab.
3.) added a client token policy in em and then set http authentication field.
all these not working.
the error we are facing is :
Non Recoverable System Fault :
javax.xml.ws.soap.SOAPFaultException: Missing <wsse:Security> in SOAP Header
complete payload is below:
<bpelFault>
<faultType>0</faultType>
<remoteFault>
<part name="summary">
<summary>Missing <wsse:Security> in SOAP Header</summary>
</part>
<part name="detail">
<detail>javax.xml.ws.soap.SOAPFaultException: Missing <wsse:Security> in SOAP Header</detail>
</part>
<part name="code">
<code>wsse:InvalidSecurity</code>
</part>
</remoteFault>
</bpelFault>
Please let us know how to proceed with this?
Thanks in advance
RegardsYou need to attach the below policy in security section (Select your partnerlink in the references section of composite.xml and the click on "Configure WS policies")
oracle/wss_username_token_client_policy
if it is Secured Webservice, then attach this policy
oracle/wss_username_token_over_ssl_client_policy
After attaching policy, click edit and configure the key(out of box, u see one key csf-key) . This key should be setup with the required username and password that matches with the Webservice expected username and pwd.
Thanks,
Satish
http://soadiscovery.blogspot.com -
How to add empty soap header?
Hello,
I created a web service proxy using WSDL and XSD files. Then, I created a sample request from client interface and sent the request as an object to call the web services. However, I am not directly calling the webservices as I am doing it through a Gateway. Here, the problem is, the Gateway accepts only empty SOAP headers and the Gateway inserts the security details in that SOAP header and will send a request to the original web services. Even if we add any element in the SOAP header, it is not accepting the request.
While sending a request through the client interface(Java class), I am not able to generate a empty SOAP header and send as request. I tried several ways adding a empty header. but no result. Is there any way we can add empty SOAP header while sending a requesting through Java class(Client interface)?
Thanks
sekharThanks for your reply.
I have tried different approaches for adding empty SOAP header with no elements. But, none of them worked. The only solution for this issue is to add OSB proxy which has the functionality to send empty SOAP header which worked for me.
Thanks
sekhar -
Adding WS Security in SOAP header for calling soap services from PI
When i am calling a wss enabled webservice from soapui with the header parameters
Username , Password and Password Type - PasswordText , it is able to get results. The soapui tool automatically adds the following in the soap header -
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-9368150" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>xxxxx</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">xxxxx</wsse:Password>
<wsse:Nonce>aOA1P6t2hJPRyuraQ/IliQ==</wsse:Nonce>
<wsu:Created>2009-07-10T14:58:33.781Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
However , in PI when the following configurations are made -
Web Services Security option selected in soap receiver adapter
In Receiver Agrrement -
Security Standard - http://docs.oasis ....
Security Procedure (Request) - None
Security Procedure (response) - None
the user tokens don't seem to generated and it is giving an authentication error . Is there any process of generating this in the outgoing soap header from PI.
SOAP Axis framework is not installed at present and working on PI 7.1 SP6.
Looking forward for your repliessame issue for me too.
Try using WS adapter on receiver side .
If you are able to attach SOAP header with WSSE fields using SOAP adapter at reciever channel let me know how you did it. -
SOAP BODY data to be Put into SOAP Header
Hi All,
Could you kindly help me out in this issue?
Basically our Requirement is to send the UserID and Password stored in
the R/3 system to the 3rd Party Server as a part of the SOAP Header .
Presently I am using a Message Interface which takes the parameters
UserID and Password and hence its placing them in the SOAP BODY which in
turn in resulting in Rejection of the data sent being us. So I guess we
have to do some take out these parameters from Message Interface and
try out something else.
So Could you help us out in this issue since we are stuck and hence not
able to proceed any further.
Here are some Details :
Here is the extract from the XML File:
A) Format in XI
<?xml version="1.0" encoding="UTF-8" ?>
- <ns1:DPSrequestToken xmlns:ns1="http://tempuri.org/message/">
- <Username>
<Username>ANYAGENT</Username>
<Password>p2ssword</Password>
</Username>
- <DPSrequestToken>
<version>1</version>
<vendorID>0142</vendorID>
</DPSrequestToken>
</ns1:DPSrequestToken>
B) The way the file needs to be sent to the 3rd party server
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>ANYAGENT</wsse:Username>
<wsse:Password>p2ssword</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:DPSrequestToken xmlns:m="https://tpvs.hmrc.gov.uk/dpsauthentication">
<m:version>1</m:version>
<m:vendorID>your 4 digit vendorID</m:vendorID>
</m:DPSrequestToken>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Basically as mentioned above
<Username>ANYAGENT</Username>
<Password>p2ssword</Password> ,Tokens should be sent in the SOAP
Header which is now being sent in the Body and hence causing problems.
Do get back to me in case you need any clarifications on this issue.
Best Regards,
Chandan
Message was edited by: Chandan A Csee this --> page 2
HTTP Adapter error.
Rgds -
Generating Web Service with SOAP Header
Hello,
I have a WSDL for a web Service using document encoding and with a soap header.
I generate a jws file using WL Workshop 81.SP4 but I always have this error message :
ERROR: AjoutContactService.jws:13: The binding for AjoutContact does not declare one part.
ERROR: SUGGESTION: A document literal binding must have at most one part. Make sure you have a WSDL that declares just one part for each message with a document literal binding.
The header is a recent adding on an existing Web Service, and I can't change the wsdl definition. I also need to use data contained by the header in conjunction with data in the body.
Is it a limitation with workshop or a problem with with my binding file ?
I give sample of my two wsdl files.
Given wsdl file
<wsdl:message name="inputAjoutContact">
<wsdl:part name="body" element="xsdin:NouveauContact"/>
<wsdl:part name="header" element="xsdinhead:EnTeteRequete"/>
</wsdl:message>
<wsdl:message name="outputAjoutContact">
<wsdl:part name="body" element="xsdout:StatutAjoutContact"/>
</wsdl:message>
<wsdl:message name="faultAjoutContact">
<wsdl:part name="body" element="xsdfault:Exception"/>
</wsdl:message>
<wsdl:portType name="AjoutContactPortType">
<wsdl:operation name="AjoutContact">
<wsdl:input name="ParametresEntree" message="tns:inputAjoutContact"/>
<wsdl:output name="ParametresSortie" message="tns:outputAjoutContact"/>
<wsdl:fault name="ParametresException" message="tns:faultAjoutContact"/>
</wsdl:operation>
</wsdl:portType>
binding file
<wsdl:operation name="AjoutContact">
<soap:operation soapAction="urn:#AjoutContact"/>
<input>
<soap:header part="header" use="literal"/>
<soap:body parts="body" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="ParametresException">
<soap:fault use="literal" name="ParametresException" />
</fault>
</wsdl:operation>Hi,
This appears to be a known limitation and is addressed by CR227689
which has a workaround that needs the wsdl to be modified.
I am not sure if this is possible given that we don't control the wsdl most times.
Could you please open a BEA support case and refer to CR227689?
Vimala-
p.s:
I found some info on the issue which could help:
1) Refer to <http://lists.oasis-open.org/archives/regrep/200306/msg00071.html>
you will see that only one part is allowed in the message part for doc/literal webservices Snippet from the above link
"Also, keep in mind that WS-I BP permits only one <part> on document/literal messages, so to be WS-I compliant, you would have to include it in the message structure. "
2) Refer to http://www.ws-i.org/Profiles/Basic/2003-08/BasicProfile-1.0a.html#refinement35722968 <http://www.ws-i.org/Profiles/Basic/2003-08/BasicProfile-1.0a.html>
below R2208)
"For document-literal bindings, the Profile requires that at most one part, abstractly defined with the element attribute, be serialized into the soap:Body element."
This implies Soap body contains message which contains a at most one part.
Maybe you are looking for
-
Training Need - TN in Training and Event Management
Hi Did any one worked on Training Need (TN) in Training and event management? I have the below question. For France there is a legal requirement to capture some 1.6 % of the employee annual gross salary towards training cost. So where to record the
-
I have recently upgraded to mavericks and I cannot get my scanner to work. I tried deleting the printer and reinstalled it but no luck
-
Converting Date.toString() back to a Date object for compare
I know this is beating a dead horse to death but I have wasted a whole day trying to get this to work. Here is the problem. I need to convert a Date().toString (format returned: Dec 19, 2006 3:39:58 PM EST) back to a Date object. What I am doing is w
-
Adding Pioneer DVR-116D dvd writer
I am replacing an old Pioneer DVR-112D with a new DVR-116D in my dual G4 MDD Mac with OSX 10.4.11 Are there updates / hacks I should load to make the DVR-116D fully compatible with my Mac? Thanks!
-
What happens when the NeverFail method, well, does?
Okay, so I'm still a relative newbie to GB3, so plenty of room for user error here, and I have read and implemented the Never Fail method of correcting the pacing of audio imports. And on my first two imports as part of my first podcast, that worked