SOAP Envelope Additional Header Fields
Hi,
I need to add additional fields in the SOAP Header when calling a web service for eg.
<SOAP:Envelope............>
<SOAP:Header>
<ns1:customTag>
</ns1:customTag>
the standard tags here
<SAP:Main...
</SAP:Main>
<SOAP:Header>
</SOAP:Envelope>
Any Blog/Example ??
Gupta,
Read this thread it might address solution ur problem -Re: XI30 SPS16 - SOAP Sender Adapter - self-defined SOAP-Header
raj.
Similar Messages
-
Sender SOAP adapter: access Header fields (dont use envelope and nosoap=1)
Hi,
I've just been going through various blogs regarding the SOAP adapter and receiving the actual unconverted content being sent to xi. Trying this out I dont get the exptected result.
What I have done is simply created a web service in XI - added '&nosoap=true' to the url and set the flag in 'Do not use SOAP envelope'.
After this I send synchronous message via xmlspy and receive error 'XIServer:CANNOT_READ_PAYLOAD'.
When checking data received in MDT I only see the envelope containing my additional header info (provided in the request) + some XI headers + a body. The body however pretty much only contain a manifest. The actual payload data that I sent in my request a gone (hence the error message).
When looking i SXMB_MONI i (naturally) also only see the header and body info - no payload. So when mapping step is reached it complains.
I'm aware I should use mapping like xslt/java to map the message. But first I need to see the payload.
Anybody got any clues?
For information I'm running 2004 SP 19.
Best Regards,
DanielHi,
This is not a matter of logging or trace levels - all these thing a set as needed.
I do see the messages but I don't see the actual payload (the body-part sent with my request) in neither the AFW or IE.
Regards,
Daniel -
How to send a signed SOAP message with additional HTTP Header fields
Our Partner's integration requirements are that we send them asynchronous SOAP messages, that are digitally signed, and whose HTTP headers contains 5 or 6 additional header fields, of which 3 or 4 will need to be dynamically set during the message mapping. I believe we can use the HTTP adapter for adding new fields to the HTTP header, but don't believe it supports signing. I believe that the SOAP adapter supports signing, but I'm not clear on how to use it to add fields to the HTTP header. What is the most straight-forward way to achieve both the signing of the message and the addition of the HTTP header values?
Thanks,
Kurt>>>What is the most straight-forward way to achieve both the signing of the message and the addition of the HTTP header values?
Use Java mapping for both.
1) Signing the message
You can digitally sign the soap message using many standard api like WSS4j? or refer Java XML signature API which comes in Jdk1.6.
Refer these links
WSS4J - http://ws.apache.org/wss4j/axis.html
Java XML signature : http://java.sun.com/developer/technicalArticles/xml/dig_signature_api/
2) >>whose HTTP headers contains 5 or 6 additional header fields, of which 3 or 4 will need to be dynamically set during the message mapping
Use Dynamic configuration API to set the additional header fields during message mapping. -
I have a SOAP response envelope that I am trying to parse using extractvalue.
The response is stored in a xmltype field in a table.
Table
create table ws_results
(x xmltype);SOAP Response
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<ActivityId CorrelationId="12855f8e-d2be-40c7-81d8-fafa3cf9a779" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">d24174d3-e095-460a-b9f8-2bae66efe813</ActivityId>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FetchResponse xmlns="urn: WA.Ecy.ADS.FacilitySite.Services">
<FacilitySiteId>99997167</FacilitySiteId>
</FetchResponse>
</s:Body>
</s:Envelope>Here is the SQL that I attempting to use to get the Facility Site ID out
select extractvalue(x,'/FetchResponse/FacilitySiteId') from ws_results;
select extractvalue(x,'/FetchResponse/FacilitySiteId','xmlns="http://microsoft.com/wsdl/types/"')
from ws_resultsThese returns a null.
Seems like this should be pretty straightforward and I am sure that I am missing something small. Any help would be appreciated.
Thanks, TonyThe problem seems to be (at least with me testing) is the xmlns="urn: WA.Ecy.ADS.FacilitySite.Services". Oracle considers it invalid xpath. If it is replaced with "http://www.ms.com/xml", then it seems OK with xpath. You can test this:
declare
---v_xmlText clob ; ---varchar2(32765);
v_xmlText sys.xmltype;
v_FacID varchar2(50) := null;
v_FacilitySiteId varchar2(50) := null;
v_FacilitySiteName varchar2(50) := null;
begin
v_xmlText := sys.xmlType('
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<ActivityId CorrelationId="48538673-36c0-4f6d-8c05-94b753d0e3ab"
xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">
b4af9688-a929-4b9f-a187-fb68f3927240
</ActivityId>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FacilitySiteResponse xmlns="http://www.ms.com/xml">
<FacilitySiteEntity>
<Id>99997167</Id>
<FacilitySiteId>99997167</FacilitySiteId>
<FacilitySiteName>My New Test Facility</FacilitySiteName>
<FacilitySiteKeySearchName>My New Te</FacilitySiteKeySearchName>
<VirtualSiteFlag>78</VirtualSiteFlag>
<GeographicLocationId>99997167</GeographicLocationId>
<CreatedDate>2008-11-07T07:32:21.07</CreatedDate>
<ModifiedByName>taus461</ModifiedByName>
<ModifiedDate>2008-11-07T07:44:20.723</ModifiedDate>
<CreatedByName>taus461</CreatedByName>
</FacilitySiteEntity>
<GeographicLocationEntity>
<Id>99997167</Id>
<GeographicLocationId>99997167</GeographicLocationId>
<AddressLine1>2020 22nd Ave SE</AddressLine1>
<CityName>Olympia</CityName>
<CongressionalDistrictNumber xsi:nil="true"/>
<COORD_XTNT_CD xsi:nil="true"/>
<HorizontalDatumCode>3</HorizontalDatumCode>
<HorizontalAccuracyLevelCode>13</HorizontalAccuracyLevelCode>
<HorizontalCollectionMethodCode>2</HorizontalCollectionMethodCode>
<GeographicPositionCode>8</GeographicPositionCode>
<LatitudeDecimalNumber xsi:nil="true"/>
<LatitudeDegreeNumber xsi:nil="true"/>
<LocationVerifiedFlag xsi:nil="true"/>
<LatitudeMinutesNumber xsi:nil="true"/>
<LatitudeSecondsNumber xsi:nil="true"/>
<LongitudeDecimalNumber xsi:nil="true"/>
<LongitudeDegreeNumber xsi:nil="true"/>
<LongitudeMinutesNumber xsi:nil="true"/>
<LongitudeSecondsNumber xsi:nil="true"/>
<BaseReferenceCode>SPCS</BaseReferenceCode>
<SOURCE_SCALE_CD>99</SOURCE_SCALE_CD>
<VerticalMeasureNumber xsi:nil="true"/>
<VerticalMeasureUnitCode>FT</VerticalMeasureUnitCode>
<VerticalReferenceCode xsi:nil="true"/>
<VerticalCollectionMethodCode xsi:nil="true"/>
<VerticalDatumCode xsi:nil="true"/>
<VerticalAccuracyLevelCode xsi:nil="true"/>
<CountyCodeNumber xsi:nil="true"/>
<LocationDescription1>This is my test facility decription</LocationDescription1>
<EPARegionName xsi:nil="true"/>
<GISVerifiedFlag xsi:nil="true"/>
<LegislativeDistrictNumber xsi:nil="true"/>
<IndianLandFlag>78</IndianLandFlag>
<RangeDirectionCode xsi:nil="true"/>
<RangeNumber xsi:nil="true"/>
<RegionCode/>
<SectionNumber xsi:nil="true"/>
<StateCode>WA</StateCode>
<SPCSXCoordinateNumber xsi:nil="true"/>
<SPCSYCoordinateNumber xsi:nil="true"/>
<SPCSZoneCode xsi:nil="true"/>
<TownshipDirectionCode xsi:nil="true"/>
<TownshipNumber xsi:nil="true"/>
<UTMXCoordinateNumber xsi:nil="true"/>
<UTMYCoordinateNumber xsi:nil="true"/>
<UTMZoneCode xsi:nil="true"/>
<WRIAIdNumber xsi:nil="true"/>
<ZipCode>98501</ZipCode>
<PLAIndicatorCode xsi:nil="true"/>
<GISReferenceNumber xsi:nil="true"/>
<GISCalculatedLatDecimalNumber xsi:nil="true"/>
<GISCalculatedLongDecimalNumber xsi:nil="true"/>
<ModifiedByName>taus461</ModifiedByName>
<ModifiedDate>2008-11-07T07:44:20.74</ModifiedDate>
<CreatedDate xsi:nil="true"/>
<CreatedByName>taus461</CreatedByName>
<FacilitySite>
<Id>99997167</Id>
<FacilitySiteId>99997167</FacilitySiteId>
<FacilitySiteName>My New Test Facility</FacilitySiteName>
<FacilitySiteKeySearchName>My New Te</FacilitySiteKeySearchName>
<VirtualSiteFlag>78</VirtualSiteFlag>
<GeographicLocationId>99997167</GeographicLocationId>
<CreatedDate>2008-11-07T07:32:21.07</CreatedDate>
<ModifiedByName>taus461</ModifiedByName>
<ModifiedDate>2008-11-07T07:44:20.723</ModifiedDate>
<CreatedByName>taus461</CreatedByName>
</FacilitySite>
</GeographicLocationEntity>
<IsOperationSuccess>true</IsOperationSuccess>
</FacilitySiteResponse>
</s:Body>
</s:Envelope>');
select fac.facID, fac.FacilitySiteId, fac.FacilitySiteName
into v_FacID, v_FacilitySiteId, v_FacilitySiteName
from
xmltable
xmlnamespaces
default 'http://www.ms.com/xml'
---'http://www.ms.com/xml'
---'http://schemas.xmlsoap.org/ws/2004/08/addressing' as "wsa",
---'http://www.w3.org/2003/05/soap-envelope' as "soap"
'//FacilitySiteResponse'
passing v_xmlText
columns
FacID varchar2(50) path '//FacilitySiteEntity/Id',
FacilitySiteId varchar2(50) path '//FacilitySiteEntity/FacilitySiteId',
FacilitySiteName varchar2(50) path '//FacilitySiteEntity/FacilitySiteName'
) fac;
dbms_output.put_line('FacID = ' || v_FacID);
dbms_output.put_line('FacSiteID = ' || v_FacilitySiteId);
dbms_output.put_line('FacSiteName = ' || v_FacilitySiteName);
select extractValue(v_xmlText, '//FacilitySiteResponse/FacilitySiteEntity/Id', 'xmlns="http://www.ms.com/xml"')
into v_FacID from dual;
dbms_output.put_line('FacID = ' || v_FacID);
end;
/FacID = 99997167
FacSiteID = 99997167
FacSiteName = My New Test Facility
FacID = 99997167
PL/SQL procedure successfully completed. -
It can NOT parse ....
<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><h:ServerVersionInfo MajorVersion="14" MinorVersion="2" MajorBuildNumber="309
" MinorBuildNumber="3" Version="Exchange2010_SP2" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns
:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/></s:Header><s:Body><m:GetFolderResponse xmlns:m="http://schemas.microsoft.com/exchange/service
s/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><m:ResponseMessages><m:GetFolderResponseMessage ResponseClass="Success"><m:ResponseCode>NoError</m:Respo
nseCode><m:Folders><t:CalendarFolder><t:FolderId Id="AAMkADExNjY4ZWRmLWIwN2YtNDAxMS05ZjEzLTg3YTRiMjQ0ZGY3ZQAuAAAAAADU0n/e4OgzQYvxnEFT1sxPAQA1LVqe3bVEQ6g4HVLTxYapAFiIzwa6AAA=" ChangeKey="AgA
AABYAAACUAPkRiik5TYV1B0n4GmWXAAAAAj0P"/><t:ParentFolderId Id="AAMkADExNjY4ZWRmLWIwN2YtNDAxMS05ZjEzLTg3YTRiMjQ0ZGY3ZQAuAAAAAADU0n/e4OgzQYvxnEFT1sxPAQA1LVqe3bVEQ6g4HVLTxYapAFiI0lHWAAA=" Chang
eKey="AQAAAA=="/><t:FolderClass>IPF.Appointment</t:FolderClass><t:DisplayName>Calendar</t:DisplayName><t:TotalCount>2</t:TotalCount><t:ChildFolderCount>0</t:ChildFolderCount><t:EffectiveRig
hts><t:CreateAssociated>true</t:CreateAssociated><t:CreateContents>true</t:CreateContents><t:CreateHierarchy>true</t:CreateHierarchy><t:Delete>true</t:Delete><t:Modify>true</t:Modify><t:Rea
d>true</t:Read><t:ViewPrivateItems>true</t:ViewPrivateItems></t:EffectiveRights><t:PermissionSet><t:CalendarPermissions><t:CalendarPermission><t:UserId><t:DistinguishedUser>Default</t:Disti
nguishedUser></t:UserId><t:CanCreateItems>false</t:CanCreateItems><t:CanCreateSubFolders>false</t:CanCreateSubFolders><t:IsFolderOwner>false</t:IsFolderOwner><t:IsFolderVisible>false</t:IsF
olderVisible><t:IsFolderContact>false</t:IsFolderContact><t:EditItems>None</t:EditItems><t:DeleteItems>None</t:DeleteItems><t:ReadItems>TimeOnly</t:ReadItems><t:CalendarPermissionLevel>Free
BusyTimeOnly</t:CalendarPermissionLevel></t:CalendarPermission><t:CalendarPermission><t:UserId><t:DistinguishedUser>Anonymous</t:DistinguishedUser></t:UserId><t:CanCreateItems>false</t:CanC
reateItems><t:CanCreateSubFolders>false</t:CanCreateSubFolders><t:IsFolderOwner>false</t:IsFolderOwner><t:IsFolderVisible>false</t:IsFolderVisible><t:IsFolderContact>false</t:IsFolderContac
t><t:EditItems>None</t:EditItems><t:DeleteItems>None</t:DeleteItems><t:ReadItems>None</t:ReadItems><t:CalendarPermissionLevel>None</t:CalendarPermissionLevel></t:CalendarPermission></t:Cale
ndarPermissions></t:PermissionSet></t:CalendarFolder></m:Folders></m:GetFolderResponseMessage></m:ResponseMessages></m:GetFolderResponse></s:Body></s:Envelope>
microsoft.exchange.webservices.data.ServiceRequestException: The request failed. An element node 'soap:Envelope' of the type START_ELEMENT was expected, but node '{http://schemas.xmlsoap.or
g/soap/envelope/}Envelope' of type START_ELEMENT was found.
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:51)
at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:142)
at microsoft.exchange.webservices.data.ExchangeService.bindToFolder(ExchangeService.java:346)
at microsoft.exchange.webservices.data.ExchangeService.bindToFolder(ExchangeService.java:370)
at microsoft.exchange.webservices.data.Folder.bind(Folder.java:50)
at microsoft.exchange.webservices.data.Folder.bind(Folder.java:69)
at com.tsg.ews.GetItemWorker.run(GetItemWorker.java:252)
at java.lang.Thread.run(Thread.java:662)
Caused by: microsoft.exchange.webservices.data.ServiceXmlDeserializationException: An element node 'soap:Envelope' of the type START_ELEMENT was expected, but node '{http://schemas.xmlsoap.
org/soap/envelope/}Envelope' of type START_ELEMENT was found.
at microsoft.exchange.webservices.data.EwsXmlReader.internalReadElement(EwsXmlReader.java:114)
at microsoft.exchange.webservices.data.EwsXmlReader.readStartElement(EwsXmlReader.java:618)
at microsoft.exchange.webservices.data.ServiceRequestBase.readResponse(ServiceRequestBase.java:450)
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.readResponse(SimpleServiceRequestBase.java:101)
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:38)After these change still I am getting this kind of Error:
microsoft.exchange.webservices.data.ServiceRequestException
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:63)
at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:142)
at microsoft.exchange.webservices.data.ExchangeService.internalFindFolders(ExchangeService.java:202)
at microsoft.exchange.webservices.data.ExchangeService.findFolders(ExchangeService.java:257)
at ci.cryoserver.ews.EWSUtils.testEWSWebService(Unknown Source)
at org.apache.jsp.save_005fimap_005fmailbox_005freader_005fuserinfo_jsp._jspService(save_005fimap_005fmailbox_005freader_005fuserinfo_jsp.java:453)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at ci.cryoserver.frontend.filter.CompanyTagFilter.doFilter(CompanyTagFilter.java:69)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at ci.cryoserver.ntlm.CryoHttpSecurityFilter.doFilter(CryoHttpSecurityFilter.java:105)
at ci.cryoserver.ntlm.SSOFilter.doFilter(SSOFilter.java:66)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at ci.cryoserver.ntlm.NTLMPostFilter.doFilter(NTLMPostFilter.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at ci.cryoserver.frontend.filter.CharsetFilter.doFilter(CharsetFilter.java:152)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: microsoft.exchange.webservices.data.ServiceXmlDeserializationException: An element node 'soap:Header' of the type START_ELEMENT was expected, but node '{http://schemas.xmlsoap.org/soap/envelope/}Body' of type START_ELEMENT was found.
at microsoft.exchange.webservices.data.EwsXmlReader.internalReadElement(EwsXmlReader.java:121)
at microsoft.exchange.webservices.data.EwsXmlReader.readStartElement(EwsXmlReader.java:625)
at microsoft.exchange.webservices.data.ServiceRequestBase.readSoapHeader(ServiceRequestBase.java:565)
at microsoft.exchange.webservices.data.ServiceRequestBase.readResponse(ServiceRequestBase.java:525)
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.readResponse(SimpleServiceRequestBase.java:171)
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:49)
... 40 more
This Account is working perfectly with autodiscovery mode. any fix for this ? -
Two SOAP Envelope's in OSB Response document
Hi,
I'm getting two SOAP envelope's (with same body in both envelopes) in the Response document while testing in OSB console. Can you pls let me know what could be the reason.
ThanksHi Vlad,
Actually I'm getting the response that I need. But I'm getting it two times in Response document tab of OSB test console.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<soapenv:Body>
<result>Success</result>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<soapenv:Body>
<result>Success</result>
</soapenv:Body>
</soapenv:Envelope>
What I'm expecting is only one SOAP Envelope.
Thanks
Edited by: bpeltechie on Sep 13, 2012 11:28 AM -
Reading through a Soap Envelope
Hello,
The scenario is a synchronous, PI is sending a request to a web service hosted on the third pary systems. The request has been initiated by the method provided in the WSDL.The third party system is sending the response in terms of a Soap Envelope to PI.There is no method existing in the WSDL provided to carry envelope. How to read the soap envelope sent to PI.
Regards,
Kiran.SOAP Adapter Sender - PI host webservice - so setting options do not use envelope and adding parameter in the WSDL URL can provide control to have soap envelope and header inside the PI boundary to use them. William's blog explains it.
SOAP Adapter Receiver- PI consume webservice- Adding the same options to send soap envelope and soap header to third party system. In other words, Not adding those options will not provide envelope and header details in the request message to third party.
Abhisek's comment is correct. I concur.
If third party not sending envelope and header information in their response message, You cannot get it. If you need then you might have to create the message structure as you need using XSLT mapping or java mapping -
I am new to mobile web services. I need to create a parser but my code didnot work:( Could you please help me?
* To change this template, choose Tools | Templates
* and open the template in the editor.
import java.io.*;
import javax.microedition.midlet.*;
import org.ksoap2.SoapEnvelope;
import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.ByteArrayInputStream;
* @author Welcome
public class MobileSOAPParsingMidlet extends MIDlet {
String msg1="<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"> <S:Header/>" +
" <S:Body> <ns2:Add xmlns:ns2=\"http://webservice/\"> <x>5</x>" +
" <y>8</y> </ns2:Add> </S:Body></S:Envelope>";
String msg2 = " <Envelope Version= \"1\"> <Body> <WebService> <Action>Add</Action> <x>5</x> <y>8</y> </WebService> </Body></Envelope>";
String msg = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<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\">\n" +
" <getRating xmlns=\"http://tempuri.org\">\n" +
" </getRating>\n" +
" </soap:Body>\n" +
"</soap:Envelope>";
public void startApp() {
byte[] xmlByteArray = msg.getBytes();
ByteArrayInputStream xmlStream = new ByteArrayInputStream( xmlByteArray );
InputStreamReader xmlReader = new InputStreamReader( xmlStream );
KXmlParser parser = new KXmlParser();
try {
parser.setInput(xmlStream, msg);
} catch (XmlPullParserException ex) {
ex.printStackTrace();
SoapEnvelope soapenvelope=new SoapEnvelope(SoapEnvelope.VER12);
try {
soapenvelope.parse(parser);
} catch (IOException ex) {
ex.printStackTrace();
} catch (XmlPullParserException ex) {
ex.printStackTrace();
// catch(UnsupportedEncodingException e){
// System.err.println(e);
public void pauseApp() {
public void destroyApp(boolean unconditional) {
}I accidently hit the post before the messag was composed.
I'm trying to parse an XML soap envelope found in a collection. I can do it in TOAD but get a "ORA-01008: not all variables bound" message in APEX within a PL/SQL anonymous block
Here is the code snippet:
declare
l_xml clob;
l_pdf clob;
begin
select xmltype.createxml(cm.clob001)
into l_xmlval
from ....
select l_xmlval.extract('//*[local-name()=''reportBytes]').getclobval()
into l_pdf
from dual;
end;
It is the presense of the two backslashes that cause the ORA-01008. Does anybody know how to resolve this problem?
Alex -
HTTP Header fields in SOAP adapter - Part 2
Hi All,
With regards to my previous thread HTTP Header fields in SOAP adapter
my header issue is solved and hence I have closed the thread but still I am not able to make the connection successful. The new problem is below
My vendor requirement is to specify the header as "Ent-sender" but when we give the same in XI in communication channel it automatically convets into uppercase "ENT-SENDER". Due to case-sensitive in vendor server the connection is not gettingestablished.
Please help me out how to solve the problem.
<b>Note:</b> Sorry for the new thread as it was created due to new problem and also the previuos thread is already too long.
Regards,
DhillHi Neaves,
Thank you, I jave seen the note and find the below solution will be some what realated to my prblem.
<u><b>The nosoap mode lets the adapter send the XI payload directly without wrapping it in the SOAP envelope. Although the main use of this mode is to send some plain text content directly to some web server, one can use this mode to send their own SOAP message (e.g., with arbitrary headers) to an external web service (See related questions). In this case, the XI payload must be formatted in the SOAP envelope.
To use the nosoap mode, the channel must be configured to use no SOAP envelope.</b></u>
If yes, can you please let me know how to use nosoap mode otherise let me the other possibilities. I am already using tcpg2.zip to trace the SOAP adapter in which it was confirmed that XI is changing the header automatically into CAPS whatever case we give,
Regards,
Dhill -
SOAP Sender with additional header: Interface determination error
Hello Experts,
I need to implement a scenario where in sender will add custom header fields and in PI, the values needs to captured. Second step: Based on the custom header value, the receiver needs to be determined.
Scenario: SOAP Sender -> PI -> SOAP Receiver
Request Message:
<RequestMsg>
<request>
<Field 1>...</Field 1>
<Field 2>...</Field 2>
<Field 3>...</Field 3>
</request>
</RequestMsg>
Without any custom SOAP header, I have created Request / Response Message, Message Mapping, Service Interfaces (Inbound & Outbound) and Operation Mapping and tested the scenario by triggering call through SOAP UI, it works fine. SOAP Request XML looks like below:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v1="http://www.test.abc.com/v1">
<soapenv:Header />
<soapenv:Body>
<v1:RequestMsg>
<request>
<Field 1>1</Field 1>
<Field 2>2</Field 2>
<Field 3>3</Field 3>
</request>
</v1:RequestMsg>
</soapenv:Body>
</soapenv:Envelope>
To use customer fields in SOAP Header, I have checked the option "Do Not Use SOAP Envelope" in the SOAP Sender CC and added "&nosoap=true" to url. SOAP Request XML looks like below:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v1="http://www.test.abc.com/v1">
<soapenv:Header >
<id>REC1</id>
</soapenv:Header >
<soapenv:Body>
<v1:RequestMsg>
<request>
<Field 1>1</Field 1>
<Field 2>2</Field 2>
<Field 3>3</Field 3>
</request>
</v1:RequestMsg>
</soapenv:Body>
</soapenv:Envelope>
Now, when I invoke the url, I see that the message reaches PI but it throws error: RoutingException: InterfaceDetermination did not yield any actual interface
Please note that I have added a Java Mapping before main message mapping to read the soap header and pass only the request message to the next message mapping.
I am sure, I am missing important steps in the configuration. Please help me in reolving the issue.
Thanks & Regards,
Ankit SrivastavaHello Hareesh,
Bingo! The second option suggested by Nicolas worked like a charm. I am just copying the same here:
-----In ESR, you set the attribute "Interface Pattern" of the outbound service interface as "Stateless (XI30-compatible)", which does not use operations.----
Thanks a lot. Now, I will be able to concentrate on the next steps.
Regards,
Ankit Srivastava -
How i use header fields in soap adapter
Hi Experts,
I need use header fields http in soap adapter receiver but i don't know where's the Variable Header
Do you know where i find this?
Somebody know how i put header fields http in soap adapter receiver?
Thanks for all,It is similar like in this blog:
/people/william.li/blog/2006/04/18/dynamic-configuration-of-some-communication-channel-parameters-using-message-mapping
Find in the online help the values for the SOAP adapter.
You can only add additional fields, you cannot influence the standard field like content-type and content-id.
Regards
Stefan -
Accessing Message Header fields from envelope
I am doing an interface with the RNIF adapter. They want me to pull the delivery header information, which is in the RNIF envelope, not the payload document and map it into some fields that exist in the inbound schema. Can this be done in message mapping? I would suppose that this question would apply if one wanted message header fields from the SOAP envelope also.
Kind Regards,
ChrisHave you checked this ?
http://help.sap.com/saphelp_nw04/helpdata/en/43/03612cdecc6e76e10000000a422035/content.htm
Regards,
Amol -
HTTP Header fields in SOAP adapter
Hi All,
I have a scenario IDoc to SOAP adapter. In which my receiver given the details as
URL : https://b2b.ecsc.us.gxs.com/invoke/GXSGateway:receiveCTE
Header Name: Header Value
Ent-sender xxxx
Ent-receiver yyyyy
Ent-APRF zzzzz
Ent-filename (not sure what data need to give)
1. I request you to let me know where I need to give these headername and hader values in soap adapter.
2. my client require file as an attachment. Please let me know how I need to send the payload as an file and where the name need to be given in the header name (Ent-filename).
Currently I used MessageTransformBean to conver my XML to text structure(flatfile structure).
Please let me know if any more details required
Regards,
DhillWas out for lunch break..
Juz Rechecking
Transport Protocol : HTTP
Message Protocol: Soap 1.1
Adapter Engine -> Adapter Engine on the Integration Server
Connection Parameters
Target URL - > https://b2b.ecsc.us.gxs.com/invoke/GXSGateway:receiveCTE
Sure about no sever authentication required and they are not using any HTTP proxy for webservice >????
Conversion Parameters
Do Not Use SOAP Envelope -> Unchecked
Keep Headers -> Checked.
Keep Attachments -> Unchecked
Use Encoded Headers -> Unchecked
Use Query String -> not so sure might be Unchecked
<b>Authentication Keys</b>
If authentication is required for the receiver system, you can enter a password and a confirmation for each key value. This means that you do not need to write passwords in the enhanced message header.
If you want to specify or display authentication keys, select View Authorization Keys.
You can enter and confirm passwords for each authentication key value (TAuthKey or TproyxAuthKey).
Try once sending the message with Adapter-Specific Message Attributes
Unchecked. See if there is a hit.I knw itz not req but juz testing.
Yeah adapter stat must be active.
Last thing need to go through the whole scenario.
<b>Cheers,
*RAJ*
*REWARD POINTS IF FOUND USEFULL*</b> -
Apache Axis Soap Envelope soap:Header
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<DataHeader xmlns="http://mySite/">
<HeaderUsername>string</HeaderUsername>
<HeaderPassword>string</HeaderPassword>
</DataExportHeader>
</soap:Header>
<soap:Body>
<ReturnDataList xmlns="http://mySite/">
<functionName>getAll</functionName>
</ReturnDataList>
</soap:Body>
</soap:Envelope>
I am using Apache Axis, how can i embed DataHeader{HeaderUsername, HeaderPassword} in my request? Thanks,I can generate the code from .wsdl by using JAP+RPC, but there is not Header class in the code. Any help?
-
Reading Header data in a SOAP Envelope for SOAP Sender Adapter
Hello All,
Am using a SOAP sender adapter and want to use the data inside the SOAP Header for some routing purpose(extended receiver determination). Any SOAP message coming into XI will look something like below. But XI will pass the contents of <SOAP-ENV:Body> to Payload and <SOAP-ENV:Header> to the SOAP Header category you can see that in SXMB_MONI.
Is there a way to read the data in my SOAP Header to be later used in my extended receiver determination.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:Q-ENV="/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
<Q-ENV:Header>
<Q-ENV:Sender-Id>1</Q-ENV:Sender-Id>
<Q-ENV:Receiver-Id></Q-ENV:Receiver-Id>
<Q-ENV:Correlation-Id></Q-ENV:Correlation-Id>
<Q-ENV:Message-Id></Q-ENV:Message-Id>
<Q-ENV:Date-Sent></Q-ENV:Date-Sent>
<Q-ENV:Document-Type></Q-ENV:Document-Type>
<Q-ENV:Message-Format></Q-ENV:Message-Format>
</Q-ENV:Header>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<Q-ENV:Body>
<Q-ENV:Content-Type>text/xml</Q-ENV:Content-Type>
<Q-ENV:Message-Type></Q-ENV:Message-Type>
<Q-ENV:Encoding>UTF-8</Q-ENV:Encoding>
<Q-ENV:Message-Body>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Thanks for your replies in advance.
Regards,
PrashanthHello,
but they were not getting any response back from XI and the sending system kept resending the message.. may be it was acting like a HTTP post.
The method that is used by the native SOAP Adapter is always HTTP Post. Not sure why you are not getting a response, have you checked the outbound firewall of the sending party or the inbound firewall of XI? To which SOAP URL are you sending to?
Hope this helps,
Mark
Maybe you are looking for
-
How do I create an instrument on Garage Band 08?
I have some sound/synth patches that I want to play and use with my midi controller as a software instrument track . It wont let me drag them in so I guess I have to make it into an instrument. Ive searched to try and find out how to do this, but to
-
Got Quicktime Pro with my Mac Pro, where do I find my registration code?
When I bought my Mac Pro two years ago it came with QT Pro. I've now reinstalled my computer, how do I get my QT to be Pro again?
-
Dead links in iWeb site - IE only
I have just published my first iWeb site: www.envisioningchange.ca All seems to work great in Safari and Firefox (though plug-in for social media sharing "Add This" is down right now), however many of the links, some of them in the text (not just nav
-
Hi, I have used Pre 4 successfully since it was released with a Sony HC5 camera. I just bought a Sony HDR-XR550 camera which records in AVCHD. I have it set to record in 1920 X 1080/60i format. I am just gettig started with Pre 8 and was unsure of w
-
Recovering deleted images off the internal memory(...
hi, i have an old Nokia 7373 that and am trying to look for some pictures am sure where on the phone, ive tried TransPic ( a very good recovery tool ) and there not on the memory card so all i can think is that there on the internal memory. has any1