SOAP to RFC1 to to RFC2 to SOAP
Hi experts,
from a soap client post the data to RFC1,based on the response of RFC1, RFC2 has to be invoked and the response send to the calling webservice. how do we do this ?
Thanks
Hi,
If you are creating data in SAP using RFC lookup then its a bad idea because
The accessors do not support transactional behaviour. Therefore, they should not be used to change the state in the accessed system; writing data to the accessed system can lead to inconsistencies. The accessors should only be used to read data from the accessed system.
http://help.sap.com/javadocs/NW04/current/pi/com/sap/aii/mapping/lookup/LookupService.html
Similar Messages
-
Wsdl url of pi SOAP Sender (that is used by invoking soap client)
hi,
i have a scenario
nonSapAppl>SoapSenderAdapter>PI>InboundProxy>Ecc
i am using xmlspy or SoapUi tool as nonSapAppl for invoking the scenario for testing.
the soapUI tool needs the url of the wsdl.
for that, i logged on to ID, and opened the SenderAgreement and Menu -> DisplayWSDL, and there i found the wsdl url as:
http://pidevsrvr:50100/dir/wsdl?p=sa/bfcbca882eba3df39bebc4ff6014c336
by using this url in soapUi tool, i am able to invoke the scenario.
it seems the url is generated by the pi system, this url is made up some unique set of chars like bfcbca882eba3df39bebc4ff6014c336 at the end.
1. is this url fixed for this for this scenario.
2. currently we develeoped on pi dev server, if transport to qa or production, will the url except the hostname will remain exactly the same.
3. is there any advantage of using "publish in SR" option.
4. our nonSAP application guy is asking some readable url prefarably, like http://pidevsrvr:50100/dir/wsdl?p=sa/scenarioReplicateAddressData. is it possible to customise the url.
thanks,
Madhu_1980I am trying to call PI web service for Oracle Procedure. I am able to test it from SOAP UI Client. But when calling from Oracle, exception is thrown.
Procedure -:
/* Formatted on 2014/06/16 20:38 (Formatter Plus v4.8.8) */
CREATE OR REPLACE PROCEDURE cdba.p_init_ws_transaction
AS
v_soap_request_text CLOB;
v_request UTL_HTTP.req;
v_response UTL_HTTP.resp;
v_buffer VARCHAR2 (32767);
v_response_xml CLOB;
l_soap_env XMLTYPE;
l_soap_body XMLTYPE;
ls_ematn VARCHAR2 (50);
ls_test VARCHAR2 (1000);
s_namespace VARCHAR2 (1000);
l_namespace VARCHAR2 (50);
l_raw_data RAW (512);
l_clob_response CLOB;
l_buffer_size NUMBER (10) := 512;
l_substring_msg VARCHAR2 (512);
-- l_napaka_opis VARCHAR2 (1000);
-- l_napaka_koda VARCHAR2 (100);
-- l_tmp VARCHAR2 (100);
BEGIN
-- --nastavimo certifikat in geslo
-- UTL_HTTP.set_wallet (g_lokacija_certifikata, g_geslo);
--nastavimo soap request:
v_soap_request_text :=
' <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:amp="http://tsl/mm/100064/AMPLDetails">
<soapenv:Header/>
<soapenv:Body>
<amp:MT_AMPLDetails_Request>
<row>
<BMATN>0008C0053</BMATN>
</row>
</amp:MT_AMPLDetails_Request>
</soapenv:Body>
</soapenv:Envelope>';
SELECT XMLTYPE (v_soap_request_text).EXTRACT ('//row/BMATN/text()',
s_namespace || l_namespace
).getstringval ()
INTO ls_test
FROM DUAL;
DBMS_OUTPUT.put_line (ls_test);
v_request :=
UTL_HTTP.begin_request
(url => 'http://176.0.11.76:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=SI_OS_AMPLDetails&receiverParty=&receiverService=&interface=SI_OS_AMPLDetails&interfaceNamespace=http://tsl/mm/100065/AMPLDetails',
method => 'POST'
--UTL_HTTP.set_header (v_request, 'User-Agent', 'Mozilla/4.0');
--v_request.method := 'POST';
UTL_HTTP.set_body_charset (v_request, 'UTF8');
UTL_HTTP.set_header (r => v_request,
NAME => 'Content-Length',
VALUE => DBMS_LOB.getlength (v_soap_request_text)
UTL_HTTP.set_header (r => v_request,
NAME => 'SOAPAction',
VALUE => 'http://sap.com/xi/WebService/soap1.1'
UTL_HTTP.set_authentication (v_request, '157769', 'tatasap@89');
UTL_HTTP.write_text (r => v_request, DATA => v_soap_request_text);
<<request_loop>>
FOR i IN 0 .. CEIL (LENGTH (v_soap_request_text) / l_buffer_size) - 1
LOOP
l_substring_msg :=
SUBSTR (v_soap_request_text, i * l_buffer_size + 1, l_buffer_size);
DBMS_OUTPUT.put_line (l_substring_msg);
BEGIN
l_raw_data := UTL_RAW.cast_to_raw (l_substring_msg);
UTL_HTTP.write_raw (r => v_request, DATA => l_raw_data);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
EXIT request_loop;
END;
END LOOP request_loop;
v_response := UTL_HTTP.get_response (v_request);
BEGIN
--convert the response to a CLOB
<<response_loop>>
LOOP
DBMS_OUTPUT.put_line ('1');
UTL_HTTP.read_raw (v_response, l_raw_data, l_buffer_size);
l_clob_response :=
l_clob_response || UTL_RAW.cast_to_varchar2 (l_raw_data);
DBMS_OUTPUT.put_line (UTL_RAW.cast_to_varchar2 (l_raw_data));
END LOOP response_loop;
EXCEPTION
WHEN UTL_HTTP.end_of_body
THEN
UTL_HTTP.end_response (v_response);
END;
DBMS_OUTPUT.put_line ('done');
DBMS_OUTPUT.put_line ('done');
s_namespace :=
'xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema/" ';
l_namespace := 'xmlns="http://tempuri.org/"';
-- SELECT XMLTYPE (l_clob_response).getstringval ()
-- INTO ls_test
-- FROM DUAL;
SELECT XMLTYPE (l_clob_response).EXTRACT ('//record/EMATN/text()',
s_namespace || l_namespace
).getstringval ()
INTO ls_test
FROM DUAL;
DBMS_OUTPUT.put_line (ls_test);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('exception block');
DBMS_OUTPUT.put_line (DBMS_UTILITY.format_error_backtrace);
UTL_HTTP.end_response (v_response);
DBMS_OUTPUT.put_line (SQLERRM);
-- p_napaka := SQLERRM;
-- p_url_megapos := NULL;
END; -- end p_init_ws_transaction
Output -:
0008C0053
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:amp="http://tsl/mm/100064/AMPLDetails">
<soapenv:Header/>
<soapenv:Body>
<amp:MT_AMPLDetails_Request>
<row>
<BMATN>0008C0053</BMATN>
</row>
</amp:MT_AMPLDetails_Request>
</soapenv:Body>
</soapenv:Envelope>
1
<?xml version='1.0'?>
<!-- see the documentation -->
<SOAP:Envelope xmlns:SOAP='http://schemas.xmlsoap.org/soap/envelope/'>
<SOAP:Body>
<SOAP:Fault>
<faultcode>SOAP:Server</faultcode>
<faultstring>Server Error</faultstring>
<detail>
<s:SystemError xmlns:s='http://sap.com/xi/WebService/xi2.0'>
<context>XIAdapter</context>
<code>ADAPTER.JAVA_EXCEPTION</code>
<text><![CDATA[
java.lang.NullPointerException: while trying to invoke the method java.lang
1
.String.indexOf(int) of a null object loaded from local variable 'ctype'
at com.sap.aii.af.sdk.xi.net.MIMEInputSource.decodeContentType(MIMEInputSource.java:456)
at com.sap.aii.af.sdk.xi.net.MIMEInputSource.readBody(MIMEInputSource.java:351)
at com.sap.aii.af.sdk.xi.net.MIMEServletInputSource.parse(MIMEServletInputSource.java:58)
at com.sap.aii.adapter.soap.web.MessageServlet.doPost(MessageServlet.java:343)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
at javax.servlet.http.HttpServl
1
et.service(HttpServlet.java:847)
at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:152)
at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:38)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:457)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:210)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:441)
at
1
com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:430)
at com.sap.engine.services.servlets_jsp.filters.DSRWebContainerFilter.process(DSRWebContainerFilter.java:38)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.servlets_jsp.filters.ServletSelector.process(ServletSelector.java:81)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services
1
.servlets_jsp.filters.ApplicationSelector.process(ApplicationSelector.java:276)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.WebContainerInvoker.process(WebContainerInvoker.java:81)
at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.ResponseLogWriter.
1
process(ResponseLogWriter.java:60)
at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.DefineHostFilter.process(DefineHostFilter.java:27)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.
1
httpserver.filters.MonitoringFilter.process(MonitoringFilter.java:29)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.SessionSizeFilter.process(SessionSizeFilter.java:26)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractC
1
hain.java:78)
at com.sap.engine.services.httpserver.filters.MemoryStatisticFilter.process(MemoryStatisticFilter.java:57)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.DSRHttpFilter.process(DSRHttpFilter.java:43)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.http
1
server.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.server.Processor.chainedRequest(Processor.java:475)
at com.sap.engine.services.httpserver.server.Processor$FCAProcessorThread.process(Processor.java:269)
at com.sap.engine.services.httpserver.server.rcm.RequestProcessorThread.run(RequestProcessorThread.java:56)
at com.sap.engine.core.thread.execution.Executable.run(Executable.java:122)
at com.sap.engine.core.thread.execution.Executable.run(Executable.java:10
1
1)
at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:328)
]]></text>
</s:SystemError>
</detail>
</SOAP:Fault>
</SOAP:Body>
</SOAP:Envelope>
1
done
done -
All -
I'm new to consuming web services in JDeveloper. I'm using Oracle JDEV 10.1.3.3/OC4J. I'm using this version since it is compatible with Oracle EBS 12.1.3. My intent is to pull data from our third party recruitment app (Success Factors) and load that data into Oracle HRIS. I'm already doing this through a .NET application. I'm converting it to be a Java Concurrent Program in EBS. The code listed below is a stub call to verify I'm on the right track. I created a JDeveloper Web Services proxy project. I'm testing it locally on my windows desktop. When I'm able to consume the service successfully, then I'll think about moving it to the EBS server.
I'm getting the following error when I invoke the following service:
HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
End point is: https://api4.successfactors.com/sfapi/v1/soap?wsdl
Any help/assistance would be much appreciated.
Below is my code and output of my test:
package emsc.oracle.apps.emscper.sfapi.proxy;
import HTTPClient.HTTPConnection;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.IsValidSession;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.IsValidSessionResponse;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Login;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LoginResponse;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LoginResult;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Logout;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LogoutResponse;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.SFCredential;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.SFParameter;
import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Error;
import java.io.File;
import javax.xml.rpc.ServiceFactory;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
import javax.xml.ws.BindingProvider;
import javax.xml.soap.SOAPException;
import java.util.Map;
import oracle.security.ssl.OracleSSLCredential;
public class SFAPITest {
// Declare members:
private String companyId;
private String userName;
private String password;
private String developerKey;
private Date effDt;
private String greaterThanEffDt;
private String lessThanEffDt;
// Declare constants:
final static private String breakLine = "+---------------------------------------------------------------------------+";
final static private String format = "yyyy-mm-dd";
private enum ReqId {
PrimaryReq(25),
PrimaryReqCEO(26),
EmCarePrimary(27),
RTI(28),
EmCareClinical(29);
private int reqId;
private ReqId() {
private ReqId(int value) {
reqId = value;
public int getReqId() {
return reqId;
// Getters and Setters:
protected String getCompanyId() {
return this.companyId;
protected void setCompanyId(String value) {
this.companyId = value;
protected String getUserName() {
return this.userName;
protected void setUserName(String value) {
this.userName = value;
protected String getPassword() {
return this.password;
protected void setPassword(String value) {
this.password = value;
protected String getDeveloperKey() {
return this.developerKey;
protected void setDeveloperKey(String value) {
this.developerKey = value;
protected Date getEffDt() {
return this.effDt;
protected void setEffDt(Date value) {
this.effDt = value;
protected String getGreaterThanEffDt() {
return this.greaterThanEffDt;
protected void setGreaterThanEffDt(String value) {
this.greaterThanEffDt = value;
protected String getLessThanEffDt() {
return this.lessThanEffDt;
protected void setLessThanEffDt(String value) {
this.lessThanEffDt = value;
public void runProgram()
SFAPIService mySFAPIService;
String CompletionText = "";
String effDtStr2 = null;
/* Code your program logic here.
* Use getJDBCConnection method to get the connection object for any
* JDBC operations.
* Use CpContext provided commit,rollback methods to commit/rollback
* data base transactions.
* Don't forget to release the connection before returning from this
* method.
/* Call setCompletion method to set the request completion status and
* completion text.
* Status values are ReqCompletion.NORMAL,ReqCompletion.WARNING,
* ReqCompletion.ERROR.
* Use Completion text message of length 240 characters. If it is more
* than 240 then full string will appear in log file and truncated 240
* characters will be used as request completion text.
try
ServiceFactory factory = ServiceFactory.newInstance();
mySFAPIService = (emsc.oracle.apps.emscper.sfapi.proxy.SFAPIService)factory.loadService(emsc.oracle.apps.emscper.sfapi.proxy.SFAPIService.class);
SFAPI api = mySFAPIService.getSFAPI();
/// SFAPI api = new SFAPI();
//Map<String, Object> requestContext = ((BindingProvider) api).getRequestContext();
//requestContext.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
System.out.println("ServiceName => " + mySFAPIService.getServiceName().toString());
System.out.println("End Point => " + mySFAPIService.getServiceName().toString());
System.out.println(breakLine);
// Authentication: Login to SFAPI:
SFCredential credential = new SFCredential();
// Fake credentials being passed in for this post:
credential.setCompanyId("XXX");
credential.setUsername("XXX");
credential.setPassword("XXX");
credential.setDeveloperKey("XXX");
HTTPConnection httpsConnection = null;
OracleSSLCredential _credential = new OracleSSLCredential();
_credential.setWallet("\\\\\\C:\\Program Files\\Java\\jdk1.6.0_33\\jre\\lib\\security", "ParkEstes3");
/*System.setProperty("javax.net.ssl.trustStore","C:\\\\\OraHome_1\\jdev\\jdevbin\\jdk\\jre\\lib\\security\\keystore");
System.setProperty("javax.net.ssl.trustStorePassword","changeit");
System.out.println(System.getProperty("javax.net.ssl.trustStore"));*/
// SFParameter: Define a generic SFParameter List. This is a necessary parameter
// to invoking calls in SFAPI:
/*System.setProperty("javax.net.ssl.keyStore",
"file:\\\C:\\jdk1.4.1\\jre\\lib\\security\\client.keystore");
System.setProperty("javax.net.ssl.keyStorePassword","welcome"); */
/* System.setProperty("oracle.net.wallet_location",
"(SOURCE=(METHOD=file)(METHOD_DATA=(DIRECTORY=\\\C:\Users\dparrish\Oracle\WALLETS)))"); // (2) */
File kstore = new File("C:\\OraHome_1\\jdev\\jdevbin\\jdk\\jre\\lib\\security\\jssecacerts");
boolean exists = kstore.exists();
if (!exists) {
System.out.println("Keystore does not exist");
else {
System.out.println("Keystore does exist");
System.setProperty("javax.net.ssl.trustStore", kstore.getAbsolutePath());
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
//System.setProperty("proxySet", "false");
//System.setProperty("http.proxyHost", "127.0.0.1");
//System.setProperty("http.proxyPort", "8080");
System.out.println(kstore.getAbsolutePath());
List<SFParameter> lst = new ArrayList<SFParameter>();
SFParameter param = new SFParameter();
param.setName("");
param.setValue("");
lst.add(param);
SFParameter[] sfParam = lst.toArray(new SFParameter[lst.size()]);
Login login = new Login();
try {
login.setCredential(credential);
System.out.println("1");
login.setParam(sfParam);
System.out.println("2");
LoginResponse loginResponse = new LoginResponse();
LoginResult loginResult = new LoginResult();
try {
loginResponse = api.login(login);
catch (Exception e ) {
System.out.println(e.getMessage());
System.out.println("3");
try {
loginResult = loginResponse.getResult();
catch (Exception e ) {
System.out.println(e.getMessage());
System.out.println("4");
IsValidSession vs = new IsValidSession();
IsValidSessionResponse isValidSessionResponse = api.isValidSession(vs);
System.out.println("5");
if (isValidSessionResponse.isResult()) {
System.out.println("Session is valid");
System.out.println("Result => " + loginResult.getSessionId());
System.out.println(breakLine);
Logout logout = new Logout();
LogoutResponse logoutResponse = api.logout(logout);
if (logoutResponse.isResult()) {
System.out.println("Logout of SFAPI Successful");
else {
System.out.println("Logout of SFAPI Unsuccessful");
else {
System.out.println("Session is invalid");
List<Error> errors = new ArrayList<Error>();
for (int i = 0; i < loginResult.getError().length; i++) {
errors.add(loginResult.getError()[i]);
for (int i = 0; i < errors.size(); i++) {
System.out.println("Error Indice => " + i);
System.out.println("Error Code: => " + errors.get(i).getErrorCode());
System.out.println("Error Message: => " + errors.get(i).getErrorMessage());
System.out.println(breakLine);
} // end for loop of SFObject errors
} // end InvalidSession
catch (Exception e)
System.out.println("Session Credential Exception");
System.out.println("Exception => " + e.getMessage());
System.out.println(breakLine);
catch (Exception e)
System.out.println("Parameter List Exception");
System.out.println("Exception => " + e.getMessage());
System.out.println(breakLine);
} // end runProgram
// Constructor:
public SFAPITest() {
} // end constructor
public static void main (String args[]) {
try
SFAPITest test = new SFAPITest();
test.runProgram();
catch (Exception e) {
System.out.println("main exception => " + e.getMessage());
} // SFAPITest
Here is the output with trace:
WARNING: Unable to connect to URL: https://api4.successfactors.com:443/sfapi/v1/soap due to java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
Session Credential Exception
Exception => ; nested exception is:
HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
+---------------------------------------------------------------------------+
Process exited with exit code 0.The other end is throwing back a programming error.
That might be because you are sending incorrect data and the other end fails to validate it.
You might be able to guess based on your C# code. But, since you are using soap one generic solution is available to you.
- Get an http proxy interceptor like wireshark.
- Run it while your C# app runs, collect the http requests from that.
- Run it while running your java code, collect the http requests from that.
Compare the two. -
SOAP error when using RTC Integration Services SOAP Operations
Oracle Real-Time Collaboration 10.1.2.0.0
We are getting exception in the SOAP response when trying to use integration services from RTC. A portion of the log file is given below:
09/04/13 09:46:58 se <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:createSession SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="urn:oracle-imt-service-facade-AuthenticationServiceEI">
<param0 xsi:type="xsd:string">10000829</param0>
<param1 xsi:type="xsd:string">MTAwMDA4Mjk6QCcqXSEvNVFELU5qZWwyVA==</param1>
<param2 xsi:type="xsd:string">SITE</param2>
</ns1:createSession></SOAP-ENV:Body></SOAP-ENV:Envelope>
09/04/13 09:46:58 conn org.apache.axis.soap.SOAPConnectionImpl@925037
[GC 61896K->52592K(100524K), 0.0077250 secs]
09/04/13 09:46:58 response org.apache.axis.Message@197cfcb
09/04/13 09:46:58 mpiResponse <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Fault><faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:HTTP</faultcode><faultstring>(0)null</faultstring><detail><string>return
code: 0
</string><ns2:HttpErrorCode xmlns:ns2="http://xml.apache.org/axis/">0</ns2:HttpErrorCode></detail></soapenv:Fault></soapenv:Body>
Any help for fixing this issue would be highly appreciated.
Thanks in advance.This article is all about setting up security on the web service. But, I just want to connect to the web service as a client using the proxy and the web service doesn't have any security set on it at this time.
I am getting a connection timeout, even when I set the syncMaxWaitTime in the domain.xml file on the app server to a higher number (although this doesn't seem to affect the time it takes for the debugger to return). -
SOAP envolope with UBL xml standard in SOAP Header
Hello All,
Currently working on webservice(SOAP Receiver) scenario. Its using the UBL XML standard and require information in the SOAP envelope header with UBL as follows.
For example:
<.soapenv:Header>
-, <,eb:MessageHeader soapenv:mustUnderstand=":1" version="2.0".
xmlns:eb="
http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd
">
-, <,eb:From>
<eb:PartyId>TEST</eb:PartyId>
</:eb:From>
-, <,eb:To>
<eb:PartyId>AVL</eb:PartyId>
</:eb:To>
<eb:CPAId>123</eb:CPAId>
<eb:ConversationId>123</eb:ConversationId>
<eb:Service>OMService</eb:Service>
<eb:Action>PricingAndAvailability</eb:Action>
-, <,eb:MessageData>
<eb:MessageId>1226949787945</eb:MessageId>
<eb:Timestamp>Mon Nov 17 13:23:07 CST 2008</eb:Timestamp>
</:eb:MessageData>
</:eb:MessageHeader:>
</:soapenv:Header>
I am able to call this webservice successfully with XML SPY and is functioning properly.
Is the XI SOAP Reciver adapter capable of creating the SOAP envelope header
like this?
Let me know if you have any thoughts on this...
Thanks in Advance
Edited by: sreenivas tirunahari on May 5, 2009 2:53 PMThe header could be created using a java mapping or XSL mapping (I think XSL would be easier). However, Runtime constants could be accessed easily using few lines of java code
http://help.sap.com/saphelp_nw04/helpdata/en/b3/9a2aeb24dc4ab6b1855c99157529e4/content.htm
Regards,
Prateek -
SOAP 1.2 web service fails when SOAP header has digital signatures
Hi,
When we upgraded our JAX-RPC web services from SOAP 1.1 to SOAP 1.2, they started failing with the following response.
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header>
<env:Upgrade>
<env:SupportedEnvelope xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"
qname="soap12:Envelope"/>
</env:Upgrade>
</env:Header>
<env:Body>
<env:Fault xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<faultcode>env:VersionMismatch</faultcode>
<faultstring>Version Mismatch</faultstring>
<faultactor>http://schemas.xmlsoap.org/soap/actor/next</faultactor>
</env:Fault>
</env:Body>
</env:Envelope>
The following two errors were in log.xml
An error occurred for port: {http://xxx.xxx.xxx/xxx/1.0/ws/TestService}TestServicePort: oracle.j2ee.ws.common.soap.fault.SOAP11VersionMismatchException: Version Mismatch.
Unable to determine operation id from SOAP Message.
We use web service handlers to add and verify digital signatures. The request message seems to be making it to the web service but is failing before reaching the web service handler which verifies the digital signature.
Everything works fine when we don't add the digital signatures. The SOAP message without the digital signature doesn't have the SOAP header. I've listed the SOAP message with the digital signature below.
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns:ns0="http://xxx.xxx.xxx/1.4/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Header>
<wsse:Security
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod>
<ds:Reference URI="#Body">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
<ds:DigestValue>...</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
</ds:X509Certificate>
</ds:X509Data>
<ds:KeyValue>
<ds:RSAKeyValue>
<ds:Modulus>
</ds:Modulus>
<ds:Exponent>AQAB</ds:Exponent>
</ds:RSAKeyValue>
</ds:KeyValue>
</ds:KeyInfo>
</ds:Signature>
</wsse:Security>
</env:Header>
<env:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Body">
<ns0:SearchRequestMessage
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:gml="http://www.opengis.net/gml"
xmlns:xxx="http://xxx.xxx.xxxl/1.4/"
xmlns:ns5="http://www.w3.org/1999/xlink"
>
<xxx:SearchCriteria itemsPerPage="10" maxTimeOut="180000" startIndex="1" startPage="1" totalResults="25">
</xxx:SearchCriteria>
</ns0:SearchRequestMessage>
</env:Body>
</env:Envelope>
We are using Oracle AS 10.1.3.3.0, WSDL 1.1, and SOAP 1.2. Everything works fine with WSDL 1.1 and SOAP 1.1.Take a look 'How to Use a Custom Serializer with Oracle Application Server Web Services' [1].
In your case, you should be looking at BeanMultiRefSerializer (org.apache.soap.encoding.soapenc), which will serialize your data using href and providing a way to deal with cycles.
All the best,
Eric
[1] http://www.oracle.com/technology/tech/webservices/htdocs/samples/serialize/index.html -
Error in SOAP receiver channel in Synchronous Proxy to SOAP scenario
Hi all,
We are experiencing an issue with a synchronous Proxy to SOAP scenario. Getting below error message in the SOAP receiver communication channel for the response message.
SOAP: Response message contains an errorXIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 500 Internal Server Error
Returning to application. Exception: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error encountered while executing mapping: com.sap.aii.af.service.mapping.MappingException: com.sap.aii.utilxi.misc.api.ResourceException: Could not determine mapping steps for message 1364b76e-ecbf-11e4-85f4-000023acfde6.
We are running PI 7.4.
Any help is appreciated.
Thanks,
PushpaHi,
Seems the Receiver Webservice is not reachable. Did you try to test it using SOAP UI tool.
1. Test a fresh message from local SOAP UI tool.
2. Pick 3rd party WSDL file and Import in SOAP UI tool.
3. Put some dummy data for mandatory fields
4. Trigger it msg and ckh if you get successful / response msg.
5. Check if firewall is open and that URL is not blocked.
Hope it helps
Regards,
Azhar -
Mapping problem in SOAP response to RFC response - RFC-XI-SOAP scenario
Hi gurus,
response structure from SOAP is as below (inbound msg - in SXMB_MONI)
MONI and RWB shows successful(I am using graphical mapping)
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- Inbound Message
-->
- <ns0:testrequestResponse xmlns:ns0="conversion" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" Status="Success">
- <ns0:SAP_OUT>
<ns0:F1 Value="1234" />
<ns0:F2 Value="2345" />
- <ns0:SAP_LINES>
- <ns0:SAP_LINE>
<ns0:SAP_L Value="1" />
<ns0:Field5 Value="" />
- <ns0:SAP_S1>
- <ns0:SAP_S>
<ns0:ID Value="11111" />
<ns0:SAP__NO Value="0001" />
<ns0:DATE1 Value="08/15/2008 00:00:00:000" />
<ns0:FST/>
</ns0:SAP_S>
</ns0:SAP_S1>
</ns0:SAP_LINE>
</ns0:SAP_LINES>
</ns0:SAP_OUT>
</ns0:testrequestResponse>
I make the RFC response with same structure and mapped it but it is not giving the full structure rather it is giving only this (Outbound Msg in SXMB_MONI)
<?xml version="1.0" encoding="UTF-8" ?>
- <ns1:Z_MYRFC.Response xmlns:ns1="urn:sap- com:document:sap:rfc:functions">
<STATUS>Success</STATUS>
</ns1:Z_MYRFC.Response>
what went wrong?Hi,
You would have forgot to map parent node coming after <STATUS>Success</STATUS>
Make sure that you have properly mapped all the parents and there child.
Are you getting the same result while Testing it standalone?
Thanks
Sunil Singh -
How to capture SOAP fault when using "Do not use SOAP envelope" parameter
Hi,
we have a synchronous RFC -> XI -> Web Service scenario. The Web Service requires some custom SOAP header elements for user authorization which forced us create the entire SOAP message in a message mapping and to set the "Do not use SOAP envelope" parameter in the receiving SOAP adapter.
In order to capture the SOAP fault message from the Web Service we have created a message interface with a fault message and also created an interface mapping with a fault message mapping.
Our problem is that the fault message is not populated when we get a SOAP fault message back from the Web Service. Is this due to the fact that we have set the "Do not use SOAP envelope" parameter?
Thanks in advance!
Stefan
Message was edited by:
Stefan NilssonHi Bhavesh,
I have exaactly same scenario. But the only difference is that the Successful payload is also not coming into PI.
The request is successfully hittng the webservice.
Please guide me on how to capture the paylod.
I am using the WSDL provided by the thirdparty but sill the message is not coming into PI. -
SOAP to JDBC/RFC - RFC/JDBC to SOAP XI Scenario
Hello,
Can anybody give me the links for SOAP to JDBC/RFC-BAPI or RFC-BAPI/JDBC ---> XI ---> SOAP XI Scenario?
I tried searching, but there isn't any step-by-step approach for it.
Thank you in advance.
Cheers,
Deepak.Hi,
Check some links on SOAP,
RFC -> XI -> WebService - A Complete Walkthrough
/people/shabarish.vijayakumar/blog/2006/03/23/rfc--xi--webservice--a-complete-walkthrough-part-1
/people/shabarish.vijayakumar/blog/2006/03/28/rfc--xi--webservice--a-complete-walkthrough-part-2
SOAP with attachments
/people/michal.krawczyk2/blog/2006/04/19/xi-rfc-or-abap-proxy-abap-proxies-with-attachments
/people/padmankumar.sahoo/blog/2005/02/15/an-overview-of-soap
/people/siva.maranani/blog/2005/05/23/communication-between-sap-system-webservice-using-proxies
SOAP
An Overview of SOAP
/people/padmankumar.sahoo/blog/2005/02/15/an-overview-of-soap
JDBC ADAPTER
http://help.sap.com/saphelp_nw04/helpdata/en/7e/5df96381ec72468a00815dd80f8b63/content.htm
/people/saravanakumar.kuppusamy2/blog/2005/01/19/rdbms-system-integration-using-xi-30-jdbc-senderreceiver-adapter
Regards,
phani
Reward points if Helpful -
SOAP Receiver Error: HTTP Error response for SOAP Request
Hi gurus,
I'm facing a weird error in File --> PI 7.31 java only --> soap receiver proxy.
The other interfaces runs well. just one get the the following error:
Exception caught by adapter framework: java.io.IOException: Error receiving or parsing request message: java.io.IOException: HTTP Error response for SOAP request or invalid content-type.
I check the payload and test in the inbound proxy. on error.
Any hints?
Thanks a lot!
regards
ChristineHello Christine,
I faced the same issue,
You can use the beans below to overcome the error.
And charset should be utf-8 -
SOAP adapter error: invalid content type for SOAP: TEXT/HTML.
Dear SAP experts,
Need your help again here.
Currently, i am getting this specific error in my RWB logs.
The connection is from SAP XI going to Trading Partner via SOAP adapter.
The specific error is:
Delivery of the message to the application using connection SOAP_http://sap.com/xi/XI/System failed, due to: com.sap.aii.af.ra.ms.api.RecoverableException: java.io.IOException: invalid content type for SOAP: TEXT/HTML.
I've already searched on what is causing the issue and it seems majority of the information is that, the error might be due to incorrect/wrong URL that was set in the configurations in the SAP XI communication channel.
Can you confirm this one?
DO you have any thoughts on this error?
Please help.
Thank you very much!
FredHi Freddiesan,
First of all, test your URL acessing it from SAP PI server's local browser to check firewall and router settings.
If it works, check these blogs:
Regards,
Rogério
Edited by: Rogério Tambellini on Jul 3, 2009 12:52 PM -
SOAP: call failed: invalid content type for SOAP: TEXT/HTML
Scenario: Idoc(R3) - -> XI (BPM) <-> webservice
I have tested the web service through a browser and XMLSPY, and this works.
There are no firewall issues.
I have used the TCPGateway to trace the messages. I receive the following error:Connection refused: connect
What is the problem?
Why can I call the web service through a browser/XMLSPY and not through the SOAP adapter?
Best Regards
Niels FærchRef: /people/shabarish.vijayakumar/blog/2008/01/08/troubleshooting--rfc-and-soap-scenarios-updated-on-20042009
First verify your address. it can cause the invalid content type for SOAP: TEXT/HTML error
<i>I have used the TCPGateway to trace the messages. I receive the following error:Connection refused: connect</i>
>> also check if your network has a proxy. in that case you wud need to provide that details in your SOAP adapter -
Response struct of SOAP in particular case (in 9i AS Soap Server)
In Oracle9i AS Soap Server,
If the method is void type, which type of response struct will
be sent from 9i Soap Server?
1) Omit the response struct.
2) Return a response struct with dummy value.Thanks for your response, Sandro.
The webservice which I use has been modified. Now if it throws an exception, I receive well a SOAP message :
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Body>
<soap-env:Fault>
<faultcode>soap-env:Client</faultcode>
<faultstring xml:lang="en">ALREADY_EXISTS</faultstring>
<detail>
<n0:Z_WS_CREATE_WAGON.Exception xmlns:n0="urn:sap-com:document:sap:rfc:functions">
<Name>ALREADY_EXISTS</Name>
<Text>Virus scan profile /SIHTTP/HTTP_UPLOAD is not active</Text>
<Message>
<ID>VSCAN</ID>
<Number>033</Number>
</Message>
</n0:Z_WS_CREATE_WAGON.Exception>
</detail>
</soap-env:Fault>
</soap-env:Body>
</soap-env:Envelope>
About the exception managing :<br>
- In my integration process, I include the send step in a block, with property <i>Exceptions</i> =
ALREADY_EXISTS
- In the send step, in property <i>Exceptions</i>, I add <i>System Error</i>
ALREADY_EXISTS
- I insert an <i>Exception Branch</i> in the new block, <i>Exception Handler</i>
ALREADY_EXISTS
Is that correct?
Do I need to use Fault messages?
And how do I get the error message ?
<br>In transaction ST22, I have no dump.
<br>If it is a problem of exception managing, why do I get also the error (<i>com.sap.aii.af.ra.ms.api.DeliveryException: invalid content type for SOAP: TEXT/HTML</i>) when all is right in the web service call ?
Regards,
Laurence -
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
Maybe you are looking for
-
Illustrator CS6 drop shadow looks worst
Anyone there know is it a bug of Illustrator CS6, I try the same size and same setup in Illustrator CS5 have no problem.
-
How to setup a rescue email???
How do I set up a rescue email???
-
Hello All, How to install a plug-in like this in apex? http://wordpress.org/extend/plugins/wp-cumulus/installation/ Thanks Tauceef Edited by: Tauceef on Dec 14, 2010 3:25 AM
-
How to play large music Library in shuffle play on iPad
I collect music and have a large library, very large, I have to constantly look for tracks to delete when I sync my two 160GB iPod classics, which hold around 18,350 songs currently. Using iTunes match on 64GB iPad and 32GB iPhone, which are at 20,62
-
Single level price determination in material ledger
What is the meaning of single level?Doe it include only the price determination of procured raw materials or will it also include semi finished and finnished goods?