Adding soap header in MX6.1

I have a code working on MX7, it first adds soap
header(username and password) then gets the response, but similar
code didn't work on MX6.1. Please help.
MX7 code:
<cfscript>
ru = XmlNew();
ru.AuthenticationHeader = XmlElemNew(ru, "
http://www.mytesting.com/Webservices/ProductInfo","AuthenticationHeader");
ru.AuthenticationHeader.UserName = mlElemNew(ru,"
http://www.mytesting.com/Webservices/ProductInfo","UserName");
ru.AuthenticationHeader.UserName.XmlText = "myusername";
ru.AuthenticationHeader.Password = XmlElemNew(ru,"
http://www.mytesting.com/Webservices/ProductInfo","Password");
ru.AuthenticationHeader.Password.XmlText = "mypassword";
ws = CreateObject("webservice", "
http://www.mytesting.com/Webservices/ProductInfo/Management.asmx?WSDL");
addSOAPRequestHeader(ws, "
http://www.mytesting.com/Webservices/ProductInfo",
"AuthenticationHeader", ru.AuthenticationHeader, true);
subbid = ws.GetProductInfo();
</cfscript>
MX6.1 code:
<!--- get SOAP functions --->
<cfinclude template="soap-udfs.cfm">
<cfscript>
ru = XmlNew();
ru.AuthenticationHeader = XmlElemNew(ru, "
http://www.mytesting.com/Webservices/ProductInfo","AuthenticationHeader");
ru.AuthenticationHeader.UserName = XmlElemNew(ru,"
http://www.mytesting.com/Webservices/ProductInfo","UserName");
ru.AuthenticationHeader.UserName.XmlText = "myusername";
ru.AuthenticationHeader.Password = XmlElemNew(ru,"
http://www.mytesting.com/Webservices/ProductInfo","Password");
ru.AuthenticationHeader.Password.XmlText = "mypassword";
ws = CreateObject("webservice", "
http://www.mytesting.com/Webservices/ProductInfo/Management.asmx?WSDL");
addRequestHeader(ws, "AuthenticationHeader",
ru.AuthenticationHeader, "
http://www.mytesting.com/Webservices/ProductInfo",
true);
subbid = ws.GetProductInfo();
</cfscript>
Error message for MX6.1:
Could not perform web service invocation "GetProductInfo"
because AxisFault faultCode: {
http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode: faultString: java.io.IOException: No serializer found
for class coldfusion.xml.XmlNodeList in registry
org.apache.axis.encoding.TypeMappingImpl@19a61ad faultActor:
faultNode: faultDetail: {
http://xml.apache.org/axis/}stackTrace:
java.io.IOException: No serializer found for class
coldfusion.xml.XmlNodeList in registry
org.apache.axis.encoding.TypeMappingImpl@19a61ad at
org.apache.axis.encoding.SerializationContextImpl.serializeActual(SerializationContextImp l.java:1281)
at
org.apache.axis.encoding.SerializationContextImpl.serialize(SerializationContextImpl.java :795)
at
org.apache.axis.message.MessageElement.outputImpl(MessageElement.java:817)
at
org.apache.axis.message.SOAPHeaderElement.outputImpl(SOAPHeaderElement.java:250)
at
org.apache.axis.message.MessageElement.output(MessageElement.java:783)
at
org.apache.axis.message.SOAPHeader.outputImpl(SOAPHeader.java:342)
at org.apache.ax...

XML snippit
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:con="urn:crmondemand/ws/contact/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:con1="urn:/crmondemand/xml/contact">
<soapenv:Header>
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>your_site/your_login</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">your_password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
This isn't exactly what you are looking for but you can use this to add a header to a axis web service call.
SOAPHeaderElement header = new SOAPHeaderElement("http://your.xsd", "your tag");
SOAPHeaderElement header1 = new SOAPHeaderElement("http://your other.xsd", "your other tag");
header1.setAttribute("Id", "your value");
header.addChild(header1);
SOAPElement node = header1.addChildElement("more text");
node.addTextNode("more text");
SOAPElement nodepwd = header1.addChildElement("another tag");
nodepwd.addTextNode("more text");
nodepwd.setAttribute("Type", "http://another url");
((Stub)service2).setHeader(header);
Hope this is more helpful than confusing.

Similar Messages

  • Adding soap header in java

    Can anyone please tell me how to add following security header in Webservices (WS 1.0 ) client using java code? (I m using axis 1.4)
    <soap:Header>
    <wsse:Security soap:mustUnderstand="1">
    <wsse:UsernameToken>
    <wsse:Username>[email protected]</wsse:Username>
    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssusername-
    token-profile-1.0#PasswordText">adminOnDemand</wsse:Password>
    </wsse:UsernameToken>
    </wsse:Security>
    </soap:Header>

    XML snippit
    <soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:con="urn:crmondemand/ws/contact/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
    xmlns:con1="urn:/crmondemand/xml/contact">
    <soapenv:Header>
    <wsse:Security>
    <wsse:UsernameToken>
    <wsse:Username>your_site/your_login</wsse:Username>
    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">your_password</wsse:Password>
    </wsse:UsernameToken>
    </wsse:Security>
    </soapenv:Header>
    This isn't exactly what you are looking for but you can use this to add a header to a axis web service call.
    SOAPHeaderElement header = new SOAPHeaderElement("http://your.xsd", "your tag");
    SOAPHeaderElement header1 = new SOAPHeaderElement("http://your other.xsd", "your other tag");
    header1.setAttribute("Id", "your value");
    header.addChild(header1);
    SOAPElement node = header1.addChildElement("more text");
    node.addTextNode("more text");
    SOAPElement nodepwd = header1.addChildElement("another tag");
    nodepwd.addTextNode("more text");
    nodepwd.setAttribute("Type", "http://another url");
    ((Stub)service2).setHeader(header);
    Hope this is more helpful than confusing.

  • 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 Verma

    Hello Experts,
    I have not found the solution yet.
    Can anyone provide some insight??
    BR,
    Nisha Verma

  • Amending SOAP Header

    My Axis SOAP server developers has recently added SOAP header
    authentication and so far I have managed to add Authentication tags
    in header. I am using
    SoapHeaderFix.as
    class provided on Adobe website to enable this functionality.
    So I am adding these two tags inside header using
    AddPersistentSOAPHeader
    method of SoapHeaderFix class and my header looks something
    like...
    <SOAP-ENV:Header><ns1:authenticateUser
    SOAP-ENV:encodingStyle="
    http://schemas.xmlsoap.org/soap/encoding/"><username
    xsi:type="xsd:string">{$uname}</username><password
    xsi:type="xsd:string">{$pass}</password></ns1:authenticateUser></SOAP-ENV:Header>
    However the problem I am facing is Axis server needs valid
    namespace defined inside top header tag. So the header should look
    like
    <SOAP-ENV:Header
    xmlns:ns1="promoregistration" ><ns1:authenticateUser
    SOAP-ENV:encodingStyle="
    http://schemas.xmlsoap.org/soap/encoding/"><username
    xsi:type="xsd:string">{$uname}</username><password
    xsi:type="xsd:string">{$pass}</password></ns1:authenticateUser></SOAP-ENV:Header>
    Can any one please help with how to achieve this?
    Even If this is possible in AS3 please let me know so I could
    propose porting my app to AS3.

    My Axis SOAP server developers has recently added SOAP header
    authentication and so far I have managed to add Authentication tags
    in header. I am using
    SoapHeaderFix.as
    class provided on Adobe website to enable this functionality.
    So I am adding these two tags inside header using
    AddPersistentSOAPHeader
    method of SoapHeaderFix class and my header looks something
    like...
    <SOAP-ENV:Header><ns1:authenticateUser
    SOAP-ENV:encodingStyle="
    http://schemas.xmlsoap.org/soap/encoding/"><username
    xsi:type="xsd:string">{$uname}</username><password
    xsi:type="xsd:string">{$pass}</password></ns1:authenticateUser></SOAP-ENV:Header>
    However the problem I am facing is Axis server needs valid
    namespace defined inside top header tag. So the header should look
    like
    <SOAP-ENV:Header
    xmlns:ns1="promoregistration" ><ns1:authenticateUser
    SOAP-ENV:encodingStyle="
    http://schemas.xmlsoap.org/soap/encoding/"><username
    xsi:type="xsd:string">{$uname}</username><password
    xsi:type="xsd:string">{$pass}</password></ns1:authenticateUser></SOAP-ENV:Header>
    Can any one please help with how to achieve this?
    Even If this is possible in AS3 please let me know so I could
    propose porting my app to AS3.

  • Adding values to XI Soap Header

    Hi All,
    We have scenario, Soap to RFC. We are generating the wsdl for the ICO. We want the end system to send some values in the soap header(XI Soap header). We have used the keep header in the sender soap communication channel and added the value to the variable binding. When we generate the wsdl, there is no header in wsdl. We can only get the body.
    Kindly let us know if what we are doing is correct.
    Also please let us know how it can be  done.

    Hi,
    We want the end system to send some values in the soap header(XI Soap header). We have used the keep header in the sender soap communication channel and added the value to the variable binding. When we generate the wsdl, there is no header in wsdl. We can only get the body.
    Checking the Keep Header option will only include the XI header as part of the response message. It will not be included in the request message. The variable binding allows you to place three variable headers (HTTP Headers) that you can use in dynamic config, it will not populate the SOAP Header at all.
    If there is information in the SOAP Header that you need, you might as well run it in noSOAP mode by checking Do Not Use SOAP Envelope in your sender CC.
    Regards,
    Mark

  • Adding C# Soap Header to a client that calls BT2010 Orchestration published as a WCF Web Service

    I've added code from this reference to my orchestration (that is published as a WCF webservice):
    Accessing SOAP Headers in Orchestrations.
    I have a C# client that I was previously using before I was using any of the SOAP Headers.  I've been looking at dozens of blogs, and find the answers to anything related to SOAP Headers most confusing (and often specific to unique cases). 
    I'm using BT2010.  How can I add username, password, and a custom header called "ApplicationID" to my existing C# program and pass it to the orchestration/web service?
    Thanks,
    Neal

    Neal,
    The BizTalk WCF Service Publishing Wizard does not include custom SOAP header definitions in the generated metadata. To publish metadata for WCF services using custom SOAP headers, you should manually create a Web Services Description Language (WSDL) file.
    You can use the externalMetadataLocation attribute of the
    <serviceMetadata> element in the Web.config file that the wizard generates to specify the location of the WSDL file. The WSDL file is returned to the user in response to WSDL and metadata exchange (MEX) requests instead of the auto-generated WSDL.
    The following XML data shows an example of a part of the WSDL file defining custom SOAP headers:
    <wsdl:operation name="Request">
    <soap12:operation soapAction="http://Microsoft.Samples.BizTalk.NetTcpAdapter/OrderProcess/IOrderProcess/Request" style="document" />
    <wsdl:input name="Order">
    <soap12:header message="i0:Order_Headers" part="SalesAgent" use="literal" />
    <soap12:body use="literal" />
    </wsdl:input>
    <wsdl:output name="OrderConfirmation">
    <soap12:header message="i0:OrderConfirmation_Headers" part="PaymentAgent" use="literal" />
    <soap12:body use="literal" />
    </wsdl:output>
    </wsdl:operation>
    Refer:
    SOAP Headers with Published WCF Services
    Rachit
    Please mark as answer or vote as helpful if my reply does

  • 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.

  • 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 replies

    same 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.

  • Adding element RelatesTo to the soap header

    Hi All,
    I need to replace wsa05:MessageID element in the soap header with the following value
    <wsa05:MessageID>fn-bea:uuid()</wsa05:MessageID>
    <wsa05:RelatesTo>$header/wsa05:MessageID/text()</wsa05:RelatesTo>
    How would I do that in OSB proxy service?

    You may use Insert or Assign or Replace action -
    http://download.oracle.com/docs/cd/E17904_01/doc.1111/e15867/proxy_actions.htm#CIHEFDFB
    Regards,
    Anuj

  • Newbie: adding a SOAP header

    I want to add this header to a web service. I don't know how
    to make this.
    Please help me (if you can).
    <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>user</wsse:Username>
    <wsse:Password Type="
    http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#Password Text">passtext</wsse:Password>
    </wsse:UsernameToken>
    </wsse:Security>
    </SOAP-ENV:Header>
    Thanks,
    Cristy

    Neal,
    The BizTalk WCF Service Publishing Wizard does not include custom SOAP header definitions in the generated metadata. To publish metadata for WCF services using custom SOAP headers, you should manually create a Web Services Description Language (WSDL) file.
    You can use the externalMetadataLocation attribute of the
    <serviceMetadata> element in the Web.config file that the wizard generates to specify the location of the WSDL file. The WSDL file is returned to the user in response to WSDL and metadata exchange (MEX) requests instead of the auto-generated WSDL.
    The following XML data shows an example of a part of the WSDL file defining custom SOAP headers:
    <wsdl:operation name="Request">
    <soap12:operation soapAction="http://Microsoft.Samples.BizTalk.NetTcpAdapter/OrderProcess/IOrderProcess/Request" style="document" />
    <wsdl:input name="Order">
    <soap12:header message="i0:Order_Headers" part="SalesAgent" use="literal" />
    <soap12:body use="literal" />
    </wsdl:input>
    <wsdl:output name="OrderConfirmation">
    <soap12:header message="i0:OrderConfirmation_Headers" part="PaymentAgent" use="literal" />
    <soap12:body use="literal" />
    </wsdl:output>
    </wsdl:operation>
    Refer:
    SOAP Headers with Published WCF Services
    Rachit
    Please mark as answer or vote as helpful if my reply does

  • Passing SOAP header while invoking a web service partner link from BPEL

    I followed the steps of adding bpelx.inputheadervariable. Which is supposed to add the soad header. But after running the BPEL process if I see the message in the console, I don't see the SOAP header. Is there any way to see how the SOAP header is passed or did I set it incorrectly?
    This is what the message looks like:
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Header>
    <ns0:Context xmlns:ns0="http://www.informatica.com/wsh">
    <SessionId>[string]</SessionId>
    </ns0:Context>
    </soap:Header>
    <soap:Body>
    <ns0:StartWorkflow xmlns:ns0="http://www.informatica.com/wsh">
    <DIServiceInfo>
    <DomainName>[string]</DomainName>
    <ServiceName>[string]</ServiceName>
    </DIServiceInfo>
    <FolderName>[string]</FolderName>
    <WorkflowName>[string]</WorkflowName>
    <WorkflowRunId>[int]</WorkflowRunId>
    <WorkflowRunInstanceName>[string]</WorkflowRunInstanceName>
    <Reason>[string]</Reason>
    <Attribute>
    <Name>[string]</Name>
    <Value>[string]</Value>
    </Attribute>
    <Key>
    <Key>[string]</Key>
    <mustUse>[boolean]</mustUse>
    </Key>
    <ParameterFileName>[string]</ParameterFileName>
    <Parameters>
    <Parameters>
    <Scope>[string]</Scope>
    <Name>[string]</Name>
    <Value>[string]</Value>
    </Parameters>
    </Parameters>
    <RequestMode>[ETaskRunMode]</RequestMode>
    <TaskInstancePath>[string]</TaskInstancePath>
    <IsAbort>[boolean]</IsAbort>
    <OSUser>[string]</OSUser>
    </ns0:StartWorkflow>
    </soap:Body>
    </soap:Envelope>
    I am trying to invoke the 'startworkflow' operation of Informatica web service Dataintegration.wsdl
    Edited by: user611166 on Apr 1, 2010 10:10 AM

    Hi,
    Try using obtunnel with your bepl console.
    Alternatively, if your server is on unix/ linux, try tcpdump to capture packets to a particular server and then open the file in wireshark to analyse the contents.
    Wish SOA suite would allow us to view this by default!
    Regards,
    Sappy

  • Calling A Secured webservice using Username and password in the Soap header

    I want to call a secured webservice.
    The Username and password should be sent with the payload in the SOAP Header
    as
    <wsse:Security S:mustunderstand="0" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <wsse:UsernameToken wsu:Id="SecurityToken-XXXXXXXXXXXXXXXXXXXXXXXXX" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsse:Username>uname</wsse:Username>
    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">pwd</wsse:Password>
    </wsse:UsernameToken>
    </wsse:Security>
    Can you please send me the steps?
    I tried with giving the username and password under Service Account.
    I tried to create a wspolicy under business service. But nothing works...
    Please help me at the earliest.
    Also please give me steps in sequence.

    Now i made sure that the endpoint is available!
    Now am getting this error:
    <soapenv:Fault>
    <faultcode>soapenv:Server</faultcode>
    <faultstring>BEA-380002: localhost1</faultstring>
    <detail>
    <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
    <con:errorCode>BEA-380002</con:errorCode>
    <con:reason>localhost1</con:reason>
    <con:location>
    <con:node>RouteNode1</con:node>
    <con:path>request-pipeline</con:path>
    </con:location>
    </con:fault>
    </detail>
    </soapenv:Fault>
    Also in the invocation trace i can observe the following things:
    Under Invocation Trace:-
    ========================
         Receiving request =====> Initial Message context
         ===============================================
         under added header:-
         ==================
         <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
         </soap:Header>
         under RouteNode1
    ================
         Route to "TargetMyService_BS"
    $header (request):-
    <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    </soap:Header>
    Under Message Context changes:-
    *===============================*
    I can find this element also:-
    con:security>
    *<con:doOutboundWss>false</con:doOutboundWss>*
    *</con:security>*
    eventhough we enabled ws security, how the above tag can be false?
    I think its getting failed to populate the header with the required login credentials.
    The other doubt i have is:-
    =================
    I have chosen the service account type is static...is this right?

  • Reading custom SOAP header with XHeaderName1

    Hello Experts,
    I have a SOAP to File scenario and I am trying to do dynamic receiver determination by looking at the SOAP request header info. I am adding a custom field (System_ID) that I want rules to run against in Receiver Determination..
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:urn="urn:*******************">
    <soapenv:Header>
    <System_ID>100</System_ID>
    </soapenv:Header>
      <soapenv:Body>
       </soapenv:Body>
    </soapenv:Envelope>
    In the Receiver Determination I have multiple rules using SOAP context object to  XHeaderName1 = the System_ID (100) to pass the message to the right system at runtime according to the  System_ID.
    In the SOAP sender channel I have Set Adapter-Specific Message Attributes and Variable Transport Binding checked. I also have the variable name System_ID in the first Variable Header (XHeaderName1).
    In the SOAP sender Conversion Parameters I have Do Not Use SOAP Envelope and Keep Headers checked, as well as nosoap=true in the SOAP request URL.
    I'm getting the System ID to show in XI in sxmb_moni in the Header but no where do I see it being used with XHeaderName1.
    Am I using XHeaderName1 right? If not could you advise as to how XHeaderName1 should be used?
    My requirement is to read system ID from Header, not payload.
    Thank you!
    Tim

    I was able to find a solution to my problem.
    I created a basic senario below to test:
    1.A basic Asynchronous scenario is created using a SOAP sender adapter to 2 possible flat file receivers.
    2.The SOAP sender channel will have the option u201CDo Not Use SOAP envelopeu201D checked and SOAPUI URL will have u201C&nosoap=trueu201D added to the end.
    3.The receiver system name will be stored in the WS-Addressing u201CActionu201D field sent from SOAPUI.
    4.Two ABAP mappings are created. One mapping will extract the system number from the WS-Addressing u201CActionu201D field. The other mapping will extract just the body of the SOAP message to send along. Using regex and string manipulation in the ABAP mappings we can reuse the mappings for any SOAP message.
    5.Enhanced (Extended) Receiver Determination is selected and interface mapping using system/XI ReceiverDetermination  service interface is used to capture the receiver system.
    While this is a solution is not the best, it is a solution. Upon research I found a recent SAP Note 1385579 talking about implementing a SAP delivered generic SOAP Sender AXIS handler com.sap.aii.axis.soap.HeaderExtractionHandler to extract SOAP Header elements and place in message attributes. I will be trying this out.

  • How to add a custom element to a SOAP Header in c#

    I am new to SOAP and web-services, and not an expert on c# either so sorry if I have made an infuriatingly simple error.
    I am calling several web-services and I now need to add an element called *pcimask* to the SoapHeader in order to get a response that is PCI Compliant.
    The web-services/WSDL don't expose this property so I guess I need to add it at runtime.
    My application creates SOAP messages like the below: (the Soap Request and Response are output into a text file by a SOAP Logging class)
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Header>
    <AutHeader xmlns="http://edb.com/ws/WSCommon_v21">
    <SourceApplication>myApp</SourceApplication>
    <DestinationApplication>theirApp</DestinationApplication>
    <Function>CardCreate</Function>
    <Version>3.0.0</Version>
    <ClientContext>
    <userid>myID</userid>
    <credentials>SecureToken</credentials>
    <channel>NBA</channel>
    <orgid>123456</orgid>
    <orgunit>654321</orgunit>
    <customerid />
    <locale xsi:nil="true" />
    <ip>123.456.789.012</ip>
    </ClientContext>
    </AutHeader>
    </soap:Header>
    As I understand it, I need to add an element `pcimask="true` to the
    <ClientContext element, and it must be after the <ip>
    However the wsdl doesn't expose this as a property.
    So I have looked at the below resources:
     Bytes.com - how-add-soap-header-soap-message
     Stackoverflow: (18980689) adding-custom-soapheader-in-c-sharp-for-a-web-service-call
     Stackoverflow: (4035423) add-child-elements-to-custom-soap-header-in-spring-ws
    and I came up with a little class inside my `common.cs` as below:
    using System.Web.Services.Protocols;
    using System.Xml.Serialization;
    namespace EvryCardManagement
    [XmlRoot(Namespace = "http://edb.com/ws/WSCommon_v21")]
    [SoapHeader("EDBHeaderType", Direction = SoapHeaderDirection.In)]
    public class CardCreateEx : SoapHeader
    public string Value;
    public CardCreateEx pcimask;
    public static class Common
    public static bool closeMe { get; set; }
    public static int iMQRowID;
    public static string impNme;
    public static string impPwd;
    and I wanted to try and use it in my code that creates the SoapHeader as below:
    private EDBHeaderType wsSoapHeader()
    EDBHeaderType wsSoapHeader = new EDBHeaderType();
    /* ClientContext */
    ClientContextType clientContext = new ClientContextType();
    clientContext.userid = edb_service[0].userid;
    clientContext.credentials = Common.SOToken;
    //clientContext.pc
    clientContext.orgid = edb_service[0].orgid;
    clientContext.orgunit = edb_service[0].orgunit;
    clientContext.customerid = "";
    clientContext.channel = edb_service[0].channel;
    clientContext.ip = edb_service[0].ip;
    /* PCI MASK added to ClientContext in header; P-02925; Jan 2015 */
    CardCreateEx cardCreateExt = new CardCreateEx(); // P-02925; Jan 2015
    cardCreateExt.Value = "true";
    /* EDBHeader */
    wsSoapHeader.SourceApplication = edb_service[0].SourceApplication;
    wsSoapHeader.DestinationApplication = edb_service[0].DestinationApplication;
    wsSoapHeader.Function = edb_service[0].Function;
    wsSoapHeader.Version = edb_service[0].Version; // P-02925; Oct-Nov 2014
    wsSoapHeader.ClientContext = clientContext;
    return wsSoapHeader;
    but I get a build error:
        Attribute 'SoapHeader' is not valid on this declaration type. It is only valid on 'method' declarations.
    so what is the correct way to do this?

    Hi,
    >>Attribute 'SoapHeader' is not valid on this declaration type. It is only valid on 'method' declarations.
    Base on this situation, just as the error message says, the 'SoapHeader' attribute can only use on method, such as:
    [SoapHeader("myHeader", rection=SoapHeaderDirection.InOut)]
    //Receive any SOAP headers other than MyHeader.
    [SoapHeader("unknownHeaders",Required=false)]
    public string MyWebMethod() {
    return "Hello";
    For mire information:
    http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapheader(v=vs.110).aspx
    Besides, about Defining and Processing SOAP Headers:
    http://msdn.microsoft.com/en-us/library/77hkfhh8(v=vs.71).aspx
    http://stackoverflow.com/questions/18980689/adding-custom-soapheader-in-c-sharp-for-a-web-service-call
    Regards

  • 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
    Regards

    You 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

Maybe you are looking for