Reading parameters from Query string : Sender SOAP adapter.
Hello Experts,
I have a SOAP to SOAP scenario. Here we will have multiple receivers and dynamic receiver determination is needed.
The sender will send a Value in Query string of URL to sender SOAP adapter. This value in Query string parameter will decide the receiver at runtime.
I need to know, how can we read values from Query string of incoming call? I did tried to search blogs & forum threads but unfortunately not able to hit the right links.
Any inputs will be of great help.
Should i use "Use Query String" on sender soap channel? I tried it, but i was not able to find any query string parameters in SOAP header or payload.
Please guide me, its bit urgent.
Regards,
Abhi.
> But the argument provided from their side is: They are using standard XSD and this service is provided out of box with sender application.
If they can add a URL parameter, they can also add a field to the structure.
> They cant control the value mapping of parameters in payload to the extent required to implement this change.
Adding a new field to the structure would not affect any existing mapping.
> Since they have this custom requirement of multiple receivers & receiver to be determined at runtime, they need to go for Query string.
This can be done based on any field of the payload.
> I need to find a way to read the query string in any case.
This is not supported by SOAP adapter.
> Can I use one of the header parameters to be mapped to this value (By selecting "Use Query string" & "Keep Headers" flag in sender CC) & then extract this value from header using Dynamic configuration ?
This feature works only for XI header fields, like message ID or QoS.
Not for individual parameters.
Similar Messages
-
XI 3.0 Sender SOAP Adapter Default XI Parameters
Hi all,
I've noticed when posting to an inbound comm channel using the sender SOAP adapter that unless I specify a namespace and interface under the 'Default XI Parameters', an error is returned indicating I need to specify default values for the namespace and interface.
This doesn't make sense. I don't want to set up a new inbound comm channel for every interface for the same sender service. As long as the SOAP address location is correct, i.e. sender service and interface are specified correctly, why should I need to set a default namespace and interface? Also, what is the expected behavior of the default XI parameters? Should it override what's passed in the SOAP location string?Hi,
I think you have to add:
Optional: xml.addHeaderLine 0
Obligatory: try to put the ; between quotation marks like:
Hope this helps.
Cheers,
Paul -
TO Get Ensuring Exactly Once Processing data from sender soap adapt
To XI Specialists
Now Im trying to get Ensuring Exactly Once Processing data from sender soap adapteter.
My plan is that send data from Receiver adapter, to Sender adapter by SOAP.
(1st interface is ABAP to Soap "BE", 2nd interface is Soap to File "EO")
Sender SOAP adapter will returun Ensuring Exactly Once Processing data.
(see SAP HELP, http://help.sap.com/saphelp_nw70/helpdata/en/69/a6fb3fea9df028e10000000a1550b0/frameset.htm )
AND I want to get Ensuring Exactly Once Processing data, I want to determine what to do in ABAP proxy.
SO I made and tested 2interface. but error occuered.
I checked the error, and Now I know what is the cause.
The cause is that Ensuring Exactly Once Processing data didnt enter the payload, at Receiver Adapter.
1st interface coulnt get the payload data, so mapping error occuered....
Please give me help,
<b>"How to get Ensuring Exactly Once Processing data From Sender SOAP ADAPTER"</b>
or
<b>"How to enter Ensuring Exactly Once Processing data into Payload of Receiver SOAP ADAPTER"</b>
and more excelent way....
our XI is version7.0 and SP10
Please teach me your wisdom!
Naoki KuriharaI seeked and I noticed that
maybe I catched the message but the message dont have payload.
so I got no_payload error.
I checked SAP note.
I noticed, no_payload error will be managed to nomal message at SP13....
my XI is SP12....
I ll seek for another way!!
Thank you! noaki -
Duplicate check not working in sender soap adapter
Hi guys,
I have an urgent problem. I am using a Sender Soap Adapter (quality of service Best Effort) to receive certain web services requests and send back synchronous responses.
I have ticked the parameters "Use Encoded Headers" and "Use Query String" to implement duplicate check.
For this reason I am expecting XI to return errors of the following type when the sender systems posts duplicates:
<SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:Category>XIServer</SAP:Category>
<SAP:Code area="PERSIST">MSGGUID_EXISTING</SAP:Code>
<SAP:P1>D00B71AC7AEBDEB3E011E5E43C49D97B</SAP:P1>
<SAP:P2>CENTRAL</SAP:P2>
<SAP:P3 />
<SAP:P4 />
<SAP:AdditionalText />
<SAP:ApplicationFaultMessage namespace="" />
<SAP:Stack>Message ID D00B71AC7AEBDEB3E011E5E43C49D97B for pipeline CENTRAL, version already exists in system</SAP:Stack>
<SAP:Retry>N</SAP:Retry>
</SAP:Error>
However, although the duplicates go into an error status, the system is responding with the following message:
<SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:Category>XIAdapter</SAP:Category>
<SAP:Code area="BPE_ADAPTER">SYSTEM_FAILURE_INTERNAL</SAP:Code>
<SAP:P1 />
<SAP:P2 />
<SAP:P3 />
<SAP:P4 />
<SAP:AdditionalText />
<SAP:ApplicationFaultMessage namespace="" />
<SAP:Stack>An internal error has occurred</SAP:Stack>
<SAP:Retry>N</SAP:Retry>
</SAP:Error>
Can anybody tell me how to force XI to return a message type "MSGGUID_EXISTING" when it catches duplicates? Or if there is any configuration I can change?
Many thanks,
AldoOK, this problem is resolved.
XI seams to send the error SYSTEM_FAILURE_INTERNAL the first time it receives a duplicate message and sends the MSGGUID_EXISTING error on the following attempt to post the same message.
Cheers.
Aldo
Edited by: Aldo Lazzarini on Sep 23, 2011 6:50 AM
Edited by: Aldo Lazzarini on Sep 23, 2011 6:53 AM -
Remove authentication in sender soap adapter pi 7.1
Hello
Did anyone manged to remove authentication in PI 7.1 sender soap adapter?
I have updated file web.xml in the file com.sap.aii.adapter.soap.war
and now I want to deploy it,but I dont have any sda in the folder
thx
Shaihi Shai,
just something to try in case:
you don't need any java parameters of SOAP sender
you can try approach from Stefan:
/people/stefan.grube/blog/2006/09/21/using-the-soap-inbound-channel-of-the-integration-engine
and then:
1. in SICF copy the engine service to a new one
2. put the credentials for this new service inside SICF
then you will have sender SOAP adapter without a password right?
I didn't try it but I guess it would work without
crashing the whole original SOAP sender adapter by
making changes into web.xml
Regards,
Michal Krawczyk -
Hi,
I'd like to know the proper format of the POST request to a sender soap adapter with SMIME activated. I've found almost no documentation about it.
I'm trying to send a document ciphered to PI via soap adapter (HTTP POST). I've done the following steps
1. I activate SMIME in the sender soap adapter, and I specify "Decrypt" as the security procedure in the sender agreement. I also incorporate the private key in the keystore DEFAULT and reference to it in the sender agreement.
2. I use OpenSSL to cipher an xml document like this (I use the public certificate associated to the previous private key) :
--> openssl smime -encrypt -in fich.txt -out fich_encrypted.txt certTesting.pem
What I get is:
MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"
Content-Type: application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
Content-Transfer-Encoding: base64
MIIC....[base64 content of the file encrypted]
3. I use CURL to send the HTTP POST request to PI. Previously I get the binary file from the base64 content.
> POST /XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_1[...]
> Authorization: Basic c2U[...]
> Host: pi.[...].com:50000
> Accept: /
> Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name=fich_encrypted.der
> User-Agent: Jakarta Commons-HttpClient/3.1
> Accept-Encoding: text/xml
> Content-Disposition: attachment; filename=fich_encrypted.der
> Content-Length: 620
> Expect: 100-continue
but I get this error from the SOAP Adapter:
--> java.io.IOException: invalid content type for SOAP: APPLICATION/PKCS7-MIME.
I also get the same error if I remove the header Content-Disposition.
4. If I send the xml file without ciphering (header Content-Type: text/xml;charset=UTF-8) I get the error:
com.sap.engine.interfaces.messaging.api.exception.MessagingException: SOAP: call failed: java.lang.SecurityException: Exception in Method: VerifySMIME.run(). LocalizedMessage: SecurityException in method: verifySMIME( MessageContext, CPALookupObject ). Message: IllegalArgumentException in method: verifyEnvelopedData( ISsfProfile ). Wrong Content-Type: text/xml;charset=UTF-8. *Expected Content-Type: application/pkcs7-mime or application/x-pkcs7-mime*. Please verify your configuration and partner agreement
PROBLEM --> I really don't know what the SOAP sender channel is expecting when SMIME is activated. I've tried to send the binary file encripted as an attachment and also directly, but the soap adapter complains.
ThanksHI,
for XI EP
Please see the below links so that you can have clear Idea..
/people/saravanakumar.kuppusamy2/blog/2005/02/07/interfacing-to-xi-from-webdynpro
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/java/integrating%20web%20dynpro%20and%20sap%20xi%20using%20jaxb%20part%20ii.article
Consuming XI Web Services using Web Dynpro Part II-/people/riyaz.sayyad/blog/2006/05/08/consuming-xi-web-services-using-web-dynpro-150-part-ii
Consuming XI Web Services using Web Dynpro Part I -/people/riyaz.sayyad/blog/2006/05/07/consuming-xi-web-services-using-web-dynpro-150-part-i
/people/sap.user72/blog/2005/09/15/creating-a-web-service-and-consuming-it-in-web-dynpro
/people/sap.user72/blog/2005/09/15/connecting-to-xi-server-from-web-dynpro
Regards
Chilla.. -
Special characters in sender soap adapter provoke HTTP 500 error
Hi,
SAP R3 is sending a SOAP message to PI through SOAP adapter.
When the payload does NOT contain german characters like ü, it works fine.
However, when the payload DOES contain special characters, the SOAP adapter replies with an HTTP 500 code error.
If I use SoapUI to send the soap message, and setting UTF-8 as the encoding in the program options, it will go through fine. If I change to ISO-8859-1 it will fail.
I'm thinking in two options:
- Make sure that SAP R3 sends the message in UTF-8 format (I think this is happening currently), as if SoapUI works, then probably R3 is not using UTF-8.
- Force the adapter to use UTF-8. Is this possible? In the sender SOAP adapter I've added AF_Modules/MessageTransformBean (type local EB), and then Transform.ContentType for parameter name and --> text/plain;charset=utf-8 for parameter value. The sender adapter will fail then for every message, with or without special characters.
Anyway, in this link (http://help.sap.com/saphelp_nwpi71/helpdata/EN/a4/f13341771b4c0de10000000a1550b0/frameset.htm) it seems to say that the sender soap adapter cannot be extended with modules, so maybe that's the reason why it fails when trying to add a module.
ThanksIf I use SoapUI to send the soap message, and setting UTF-8 as the encoding in the program options, it will go through fine. If I change to ISO-8859-1 it will fail.
I'm thinking in two options:
Check the use of option 1 ..... the URL which SAP is using to send the data can containe the encoding information.
Check this SAP note: https://service.sap.com/sap/support/notes/856597
From the above note:
Q: What character encoding is supported by the SOAP sender adapter?
+you can supply the encoding information with the xmlenc variable in the request URL as in+
Regards,
Abhishek. -
How to use Basis Authentication in Sender SOAP Adapter
We implemented one Sender SOAP Adapter and we had to implement the modified WEB.XML method to remove the security specification. We have now asked the developer to correct this situation so we can remove this modification. The Interface developer would like to use Basic Authentication. If you have an automated interface sending in a SOAP Message, how do you do Basic Authentication?
I've tried using:
http://host:port/XISOAPAdapter/MessageServlet?channel=:<Service>:<Channel>&sap-user=xiappluser&sap-password=<Password>&sap-language=EN&sap-client=<Client>
When I do this, I still get the Authentication Pop-Up Window.
How does the Sending Interface either supply the ID and Password on the incoming SOAP Message or respond to the Authentication Pop-Up?
Thanks,
AnneBy Defualt the web service exposed by you will use Basic Authentication mode only.
But the way you do Basic Authentication in the web client is platfrom dependent.
This is not the way to do Basic authentication
http://host:port/XISOAPAdapter/MessageServlet?channel=:<Service>:<Channel>&sap-user=xiappluser&sap-password=<Password>&sap-language=EN&sap-client=<Client>
I am providing you a code snippet on how to Basic Authentication in Java when making the Web Service Call.
If the client is on some other platform just look for the corresponding api.
Please award points if you find this answer useful.
Code Snippet
URL url = new URL(URL);
URLConnection connection = url.openConnection();
if( connection instanceof HttpURLConnection )
((HttpURLConnection)connection).setRequestMethod("POST");
//connection.setRequestProperty("Content-Length",Integer.toString(content.length()) );
connection.setRequestProperty("Content-Type","text/xml");
connection.setDoOutput(true);
String password = User + ":" + Password ;
//Where con is a URLConnection
connection.setRequestProperty ("Authorization", "Basic " + encode(User + ":"+ Password));
connection.connect();
Encode Method
public static String encode (String source) {
BASE64Encoder enc = new sun.misc.BASE64Encoder();
return(enc.encode(source.getBytes())); -
Sender SOAP Adapter issue with webservices for authorization.
Hi All
Issue:
As we are developing a Web Service to fetch account balance from SAP(upon receiving the account no from client) and have given the wsdl file to J2EE application to call or make use of the service. But as a part of that service they expect userid/password to be entered manually from client pop-up. At this point of time, we don't want to enter userid/password manually but we want this to be hardcoded/embedded in Webservice so that there is no need of manual intervention upon calling this service.
Actual Requirement:
From Webservices to R/3-ECC6.0-IS-Banking-RFC (Synchronous Interface)
Sender: SOAP Adapter synchronous
Receiver: RFC Adapter synchronous
Note: Requesting a account number and getting response from RFC is account Balance and Date to webservice
Regards
Kiran kumar.sHi praveen,
Thanks for ur reply.What you said is exactly right but for time being i have to make the client not get the authorization(password--Username and password(pop-up)) when he invokes the WSDL into webservice for that u told that to write some hardcode in J2EE application,but i don't know that where to write and what to write.so, if possible can u give me the code and procedure.
This is the URL:
http://hcl3sap:50000/XISOAPAdapter/MessageServlet?channel=:BS_WEBSERVICE:CC_SOAPSENDER
Regards,
kiran kumar. -
Hello All,
Here the scenario is SOAP -> XI -> SAP ECC.
When the webservice is seding the message I am getting error in Sender SOAP channel.
Message is not going to Integration Engine.
Its failing with 401Un Authorized in sender soap adapter channel.My sender soap channel is plain channel with no authentication check and certificated etc.When webservice is seding request to XI its sending wit some usernmae which was there on XI box.I am facing this issue in Quality Env. The same is working fine in Dev box.
Please give me the list of points that I need to check here.
Thanks,
Regards,
NareshHi,
I am facing this issue in Quality Env. The same is working fine in Dev box.
Once the scenario is transported from Dev to QA the location where the Webservice is hosted will also change
Hence you will have to change the target URL .....just the HostName / IP address and the port for all the webservices (that you transported to QA)
Once you are in QA and with no change to the URL the sender (which I suppose is also in QA env) will be still trying to ping the same old Dev-URL....in such situation the sender is bound to get UnAuthorized error....
So one in all change the URL in your WebService to point to QA and then test....
Same logic applicable to QA --> PROD
Regards,
Abhishek. -
How to build in user authorisation in sender soap adapter
HI ,
how can i built the user authorisation in sender soap adapter. either in a url or somewhere on the server .
if anyone has an idea do let me knwo
Thanks
NikhilNikhil,
<b>sender soap adapter</b> is used for ex in the case, u need some data from the DB say of a vendor. U give the name of the vendor in the site, suppose u get the contact address of the vendor from the DB.
Sender soap adapter sends the soap request from the client to XI and from XI the request is passed to DB.
With XI, WSDL file is generated and SOAP request is generated for the WSDL file. When the WSDL is deployed on the client application, the authorization is handled.
For receiver SOAP adapter, it is the otherway round u r getting the data from the DB first and so the authorizations are held in XI.
-Naveen. -
Change Queue Name in Sender Soap Adapter (or make it dynamic)
Hello SDN!!!!
We have a scenario where we want to make a message EOIO and I have set the Queue Name in the Sender Soap Adapter and this works great. BUT it is needed to have a more specific queue name (based on order numbers not interface name) So with this being said, Is there any way to change the queue name or append to it from the Soap Sender Adapter. I see it is possible to write a Module Bean, but the Message object returned from the ModuleContext is a scaled down version of the normal message object. Any help would be greatly appreciated
Cheers
DevlinIs this the only way to change the queue name for Soap Sender? I don't think it is possible for them to do this, as their urls are static when calling us
-
Sender SOAP Adapter: zipped Payload or zipped Attachement possible?
Hi,
I've a SOAP --> PI --> Proxy Scenario. As the payload of the message can become quite huge (around 10MB), I'd like to zip the message.
From the documentation it's not clear for me if the Sender SOAP Adapter can be enhanced with the standard PayloadZipBean:
"You cannot add your own modules to this adapter" --> so is it possible to use modules provided by SAP?
If it's not possible: is there another way to send the message zipped via SOAP, e.g. as a additional attachement to the SOAP message, and to unzip the attachement / use the content of it as message payload for mapping?
Please note: usage of SOAP is a must for that scenario.
Best regards
Holger> File size is a question due to limited network speed between sender and PI. If I can reduce the data package to be transferred, it'd be a big help. Therefore I'd like to zip the message.
In this case it would be sufficient to use Content-Encoding gzip.
This is part of the HTTP protocol and will be unzipped automatically by the HTTP framework, so you need not do anything special in SOAP adapter.
See http://tools.ietf.org/html/rfc2616#section-14.11
Check if your SOAP client is able to use that.
Regards
Stefan
Edited by: Stefan Grube on Mar 31, 2009 2:11 PM -
Failed in Message Mapping for Sender SOAP Adapter
I am using a synchronous Sender SOAP adapter for sending SOAP messages using HTTP security protocol. I am trying to send SOAP messages to XI and then to RFC-R/3. And Responses back from RFC to XI and then to SOAP. I am getting an error for failed in message mapping in SXMB_MONI for converting SOAP messages to RFC. When I debug it in Message Mapping in Integration Repository, it works fine.
Any help is appreciated.
Thanks in advance!
MrudulaHi,
try to do a full cache refresh
regards,
Jakub -
Sender SOAP Adapter problem in PI 7.1
Hello Everyone,
I have a problem with Sender SOAP Adapter
In PI 7.0 i am able to receive the messages through sender SOAP Adapter for both HTTP and HTTPS. But when i am testing in PI 7.1 i am unable to receive any messages at Adapter level for both HTTP and HTTPS
All sender leagcy system are getting different error messages like
1. 400 HTTP Bad request.
2. Invalid request.
3. BAPI error message
Could any one please assist me in this problem.
Thanks
VickHi Vick,
Try like this......in ID from your sender agreement in which you have your sender SOAP comm channel, from menu select Display WSDL and then copy the WSDL URL and give it to source applications to use it.............create a service user for them to access PI 7.1 server while sending the SOAP req msg.............
your source applications may have to generate proxy from this WSDL URL in their application and then they can send a SOAP req msg to your PI 7.1 server............
Regards,
Rajeev Gupta
Maybe you are looking for
-
my phone was not working only the restore button was available so i restored it and they told me i have to update my iphone 5s as well. i waited till the end the update software was downloaded successfully but then the iphone restarted by itself and
-
Saound blaster audigy value windows vista 32 bit problem in driver compatibility!!!
i have installed the sb audigy value latest drivers july 9 2007?and it installed clean and then after a few restart it will detect again the standard?pci to pci bridge and sound devices... when i am using?xp this does not happenwhat is wrong with you
-
Fixing position in Invoice report example
Hi.. I have a report master/details,invoice_no and invoice_date in Master and price ,items and cost in details. How can I fixed the Invoice total at the buttom of Invoice paper??because every time the no of items per invoice insrease according to the
-
Node manager status showing not reachable
Hi Everybody, Before installation Nodemanager status should be started and status must be reachable. But in my case after starting nodemanager,the status is showing as inactive.I have tried with many AIA installation blogs as well as weblogic server
-
In Memory BCP from Bean to Sybase table
I am looking for an example of how to bcp data to a sybase table from within a bean. I know it is possible to do so from within a C++ program, so I'm hoping the same is true when using EJB's. Bear in mind that I am not a Java developer, I am a Sybase