Jpublisher - Consuming a Web service through a proxy with authentifiaction
Hello,
I use the command jpub to create packages in my DB for access the Web service. The Web service is accessible only behind a proxy server with authentication. I can not find options to specify the parameters jpub authentication proxy server.
Command example :
pub -u scott/tiger -sysuser sys/welcome1 -proxywsdl=http://webservices...?WSDL -endpoint=http://webservices.. -httpproxy=myproxy.com:80
In this case, jpub unable to generate packages since it can not pass the proxy server.
thank you for your help
chrispi wrote:
I use the command jpub to create packages in my DB for access the Web service. The Web service is accessible only behind a proxy server with authentication. I can not find options to specify the parameters jpub authentication proxy server.I do not see JPub in the topic that describes the subject matter of this forum. It says SQL and PL/SQL. Not JPub (whatever that may be)... And no - why should I use JPub to "generate" database packages when I have a keyboard, a brain, programming language manuals, and am perfectly capable of designing and writing code...?
Command example :
pub -u scott/tiger -sysuser sys/welcome1 -proxywsdl=http://webservices...?WSDL -endpoint=http://webservices.. -httpproxy=myproxy.com:80
Standard http proxy syntax (supported by Linux o/s and others) is as follows:
+http://[username:password@]proxy[:port]+
E.g. (setting Linux shell environment variable for proxy access)
export http_proxy=http://scott:[email protected]:80
Similar Messages
-
How to use Axis to access a web service through Authentication proxy
Using axis access internat web service is success,but access a web service through Authentication proxy is failure.But other java classes connect through a proxy to the internet which works very well:
please help me ,thank you!!!
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
//this is my access webservice faliure codes
public class TestClient
public static void main(String [] args) {
try {
System.getProperties().setProperty("http.proxySet", "true");
System.getProperties().setProperty("http.proxyHost","proxy.com");
System.getProperties().setProperty("http.proxyPort", "8080");
System.getProperties().setProperty("http.proxyUser", "username");
System.getProperties().setProperty("http.proxyPassword","password");
String endpoint =
"http://nagoya.apache.org:5049/axis/services/echo";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName(new QName("http://soapinterop.org/", "echoString") );
String ret = (String) call.invoke( new Object[] { "Hello!" } );
System.out.println("Sent 'Hello!', got '" + ret + "'");
} catch (Exception e) {
System.err.println(e.toString());
}I get an "(407)Proxy authorization required" error?I am also looking for a solution. Does any one know how to do through code instead of jvm settings?
Thanks in advance! -
Error While Consuming Public Web Service through Stand Alone Proxy
Hi,
I am getting the below error when I am consuming a public web service through Stand Alone Proxy.
java.rmi.RemoteException: Service call exception; nested exception is:
com.sap.engine.services.webservices.jaxrpc.exceptions.InvalidResponseCodeException: Invalid Response Code: (407) Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied. ).
at com.mindtree.examples.GlobalWeatherSoapStub.getCitiesByCountry(GlobalWeatherSoapStub.java:159)
at com.mindtree.examples.GlobalWeatherSoapStub.getCitiesByCountry(GlobalWeatherSoapStub.java:168)
at com.mindtree.examples.WebServiceClient.main(WebServiceClient.java:18)
Caused by: com.sap.engine.services.webservices.jaxrpc.exceptions.InvalidResponseCodeException: Invalid Response Code: (407) Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied. ).
at com.sap.engine.services.webservices.jaxrpc.wsdl2java.soapbinding.MimeHttpBinding.handleResponseMessage(MimeHttpBinding.java:903)
at com.sap.engine.services.webservices.jaxrpc.wsdl2java.soapbinding.MimeHttpBinding.call(MimeHttpBinding.java:1346)
at com.mindtree.examples.GlobalWeatherSoapStub.getCitiesByCountry(GlobalWeatherSoapStub.java:152)
... 2 more
Regards,
VenkateshHi,
I am still facing the same issue.
Regards,
Venkatesh -
Consume web service in ABAP proxy with SOAP header
Hi Thomas ,
I am trying to consume web service in ABAP . I have followed the procedure from one of your web blog <a href="/people/thomas.jung3/blog/2004/11/17/bsp-a-developers-journal-part-xiv--consuming-webservices-with-abap a Developer's Journal Part XIV - Consuming WebServices with ABAP</a> . (640 release).
I need to pass SOAP header along with SOAP body. As you mentioned I have used if_wsprotocol_ws_header interface to pass header but it is still failing.
Please see below code and please give some direction to fix the issue.
1.Create ABAP proxy for WSDL (http://ws.strikeiron.com/SwanandMokashi/StockQuotes?WSDL). It has created structures only for SOAP body.
2.Create Logical port
3.Create following program to call proxy
REPORT zproxy.
DATA: ref_stock TYPE REF TO zzco_stock_quotes_soap ,
ws_header TYPE REF TO if_wsprotocol_ws_header,
name TYPE string,
namespace TYPE string.
TRY.
CREATE OBJECT ref_stock
get WS_HEADER protocol
ws_header ?= ref_stock->get_protocol('IF_WSPROTOCOL_WS_HEADER').
set somehow header as iXML-DOM tree
DATA: ixml TYPE REF TO if_ixml,
xml_document TYPE REF TO if_ixml_document,
xml_root TYPE REF TO if_ixml_element,
xml_element TYPE REF TO if_ixml_element,
xml_node TYPE REF TO if_ixml_node.
DATA l_xstring TYPE xstring.
DATA l_string TYPE string.
FIELD-SYMBOLS <fs_xstring> TYPE xstring.
Additional Header:
CONCATENATE
'<soap:Header>'
'<s1:LicenseInfo xmlns:s1="http://ws.strikeiron.com">'
'<s1:RegisteredUser>'
'<s1:UserID>[email protected]</s1:UserID>'
'<s1:Password>aaaaaaaa</s1:Password>'
'</s1:RegisteredUser></s1:LicenseInfo>'
'</soap:Header>' INTO l_string.
convert to xstring
l_xstring = cl_proxy_service=>cstring2xstring( l_string ).
IF NOT l_string IS INITIAL.
create iXML DOM document from XML xstring
CALL FUNCTION 'SDIXML_XML_TO_DOM'
EXPORTING
xml = l_xstring
IMPORTING
document = xml_document
EXCEPTIONS
invalid_input = 1
OTHERS = 2.
IF sy-subrc = 0 AND NOT xml_document IS INITIAL.
xml_root = xml_document->get_root_element( ).
xml_element ?= xml_root->get_first_child( ).
add header element by element to SOAP header
WHILE NOT xml_element IS INITIAL.
name = xml_element->get_name( ).
namespace = 'http://swanandmokashi.com' . "xml_element->get_namespace_uri( ).
IF NOT xml_element IS INITIAL.
ENDIF.
ws_header->set_request_header(
name = name
namespace = namespace
dom = xml_element ).
xml_element ?= xml_element->get_next( ).
ENDWHILE.
ENDIF.
ENDIF.
CATCH cx_ai_system_fault .
ENDTRY.
*Call soap body using abap proxy class.
DATA: get_quotes TYPE zzget_quotes_soap_out .
DATA: get_quotes1 TYPE zzget_quotes_soap_in .
get_quotes1-quote_ticker = 'GE'.
TRY.
CALL METHOD ref_stock->get_stock_quotes
EXPORTING
get_quotes1 = get_quotes1
IMPORTING
get_quotes = get_quotes.
CATCH cx_ai_system_fault .
CATCH cx_ai_application_fault .
ENDTRY.
4.It is throwing cx_ai_system_fault error.
SOAP details:
Input:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding" >
<soap:Header>
<s1:LicenseInfo xmlns:s1="http://ws.strikeiron.com">
<s1:RegisteredUser>
<s1:UserID>[email protected]</s1:UserID>
<s1:Password>aaaaaaaa</s1:Password>
</s1:RegisteredUser>
</s1:LicenseInfo>
</soap:Header>
<soap:Body>
<tns:GetQuotes xmlns:tns="http://swanandmokashi.com">
<tns:QuoteTicker>GE</tns:QuoteTicker>
</tns:GetQuotes>
</soap:Body>
</soap:Envelope>
Thanks,
Kavitha.Hi ,
Thank you for the response. Did you passed user email and password ([email protected] /aaaaaaaa) part of licenseinfo->resisteredUser along with Quoteticker GE in analyzer?
<a href="http://www.strikeiron.com/Analyzer/OnlineAnalyzer.aspx?WSDL=http://ws.strikeiron.com/SwanandMokashi/StockQuotes?WSDL">ANALYZER</a>
Thanks,
Kavitha. -
Calling a HTTPS Web Service through a proxy
Hi All,
I am trying to make a web service proxy for a service runnig on the weblogic server over https connection. While I am configuring the proxy I am getting an error saying that Unable to tunnel through proxy. Proxy returns "HTTP/1.1 403 Tunnel or SSL Forbidden"
Any ideas why I am getting this or how it can be resolved?
Thanks in advanceHi Sandeep,
I will add some more details here to add clarity,
My web service is running over SSL (one-way) on SOA server managed by weblogic server. I am trying to create a proxy for it in jdeveloper. I can access the WSDL document through the browser at the following link:
https://10.227.32.125:8002/soa-infra/services/default/Test_OWSM_11g/bpelprocess1_client?WSDL
Now in the second step of creating of proxy (in jdeveloper) i am mentioning the above URL but getting an error saying that no WSDL document found at this location.
Any ideas where I might be goin wrong -
Problems while consuming a web-service through Netweaver using VPN
Hi all
I'm facing a problem while I'm attempting to consume a .NET web-service that is located in a remote server. We've estabished a VPN connection between our Netweaver CE in Linux to the remote office where the web-service is running.
The problem is, when my application running in Netweaver tries to consume the webservice, it takes the external access to try to reach the webservice URL instead of take the VPN route to do that. ie. my application find an external IP of the webservice instead of finding the internal IP.
When I ping the webservice URL in linux, it brings me the internal IP, but for some unknown reason, the Netweaver don't find the correct route to reach the webservice.
Does anyone have any idea or suggestion on what to do?
Thanks in advance!> The problem is, when my application running in Netweaver tries to consume the webservice, it takes the external access to try to reach the webservice URL instead of take the VPN route to do that. ie. my application find an external IP of the webservice instead of finding the internal IP.
You're using a proxy?
Markus -
Consuming stateful web service via ABAP proxy
Hi all,
I´ve got the following scenario. I´ve a ABAP proxy generated based on a WSDL file. The provider is a WebService provided by a tomcat server. (no PI etc. as middleware). The problem i´ve now is that the webservice is stateful so I need a stateful communication between my ABAP report (client) and the Web Service.
I´ve already found the possibiliy to switch on the feature "Session-Oriented Communication" on "Preconfiguration Tab" of the ABAP Proxy Screen. But unfortunately it´s not working.
Anybody knows whether general system settings has to be changed for this. Or anybody has other tips.
I´m currentliy working on the SAP Discovery System v3 which is a Netweaver 7.0.
Many thanks in advance for your answers,
AndyMarcelo Almeida wrote:
> You can use Logial port for it in LPCONFIG ( Transaction). See this examplo Below:
>
> TRY.
>
> CREATE OBJECT my_proxy
> EXPORTING
> logical_port_name = 'LP01'.
> CATCH cx_ai_system_fault.
> ENDTRY.
>
> TRY.
> input-airline_id = p_carrid.
> input-connection_id = p_connid.
> input-flight_date = p_fldate.
>
> CALL METHOD my_proxy->flight_get_detail
> EXPORTING
> input = input
> IMPORTING
> output = output.
> CATCH cx_ai_system_fault.
> CATCH cx_ai_application_fault.
> ENTRY.
>
> Its necessary create a connection in SM59 (type H) and setting in the call parameters logical port (LPCONFIG).
Hi,
thanks for your answer. It´s working!
Cheers,
Andy -
Invoking an external web service through a JCD with Basic Authentication
Group,
I am trying to invoke an external web service (written in ASP.Net) from a jcd (5.1.2). The web service is guarded by Basic Authentication. I have entered the crudentials into the External Web service environment component and deployed the project. I receive the following error from the .invoke() method:
request requires HTTP authentication: Unauthorized
I have tried the same request through SoapUI using the same crudentials and get back the response correctly. Has anyone tried invoking an external web service with basic authentication through a jcd in 5.1.2 before?
One other item of note. I have another jcd calling a different external web service deployed on the same domain. I hope that this isn't interfering with the execution of this service as it doesn't require any crudentials to execute.Hey Chris.
I am just starting to write a jcd that calls an external web service but cannot find any sample code nor instructions on how to do it in the supplied documentation. Could you send me a code sample from your one?
Cheers
Matt -
Calling a WSSE Enabled Web Service Through a Java Proxy Class
I am trying to create a client that can access a WSSE enabled web service through
the generated java proxy. For now all I am asking for in the .wsse file is the
username and password with the line <token tokenType="username"/>. In the client
I am setting the username and password token exactly as the BEA documentation
describes:
UserInfo ui = new UserInfo("myuser", "mypassword");
session.setAttribute(WSSEClientHandler.REQUEST_USERINFO, ui);
Yet I am getting the following error message when I try to run the client:
java.rmi.RemoteException: SOAP Fault:javax.xml.rpc.soap.SOAPFaultException:
EJB Exception: ; nested exception is:
com.bea.wlw.runtime.jws.wssecurity.exception.WLWWSSEException: Policy
requires Message to contain UsernameToken, UsernameToken not found in the Message.
Can anyone tell me what I am missing?
Thanks,
JohnHi John,
In your standalone client, use the following two properties to send a
user name and password to the service so that the client can
authenticate itself: javax.xml.rpc.security.auth.username
javax.xml.rpc.security.auth.password
See the docs [1]
Hope this helps,
Bruce
[1]
http://edocs.bea.com/wls/docs81/webserv/security.html#1073863
John H wrote:
>
I am trying to create a client that can access a WSSE enabled web service through
the generated java proxy. For now all I am asking for in the .wsse file is the
username and password with the line <token tokenType="username"/>. In the client
I am setting the username and password token exactly as the BEA documentation
describes:
UserInfo ui = new UserInfo("myuser", "mypassword");
session.setAttribute(WSSEClientHandler.REQUEST_USERINFO, ui);
Yet I am getting the following error message when I try to run the client:
java.rmi.RemoteException: SOAP Fault:javax.xml.rpc.soap.SOAPFaultException:
EJB Exception: ; nested exception is:
com.bea.wlw.runtime.jws.wssecurity.exception.WLWWSSEException: Policy
requires Message to contain UsernameToken, UsernameToken not found in the Message.
Can anyone tell me what I am missing?
Thanks,
John -
How to use a deployable proxy to consume a web service?
HI Gurus,
I am following this article below which helpfully explains how to create a proxy. So far so good. I have been able to create a proxy. However, the article only describes how to build a proxy.
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/70c7d0f7-153d-2a10-5d96-d334b67cd771
In the concluding part of the document the author says "In my next article I will tell you how to use this deployable proxy to consume the web service in web application."
I have looked around the SDN but have not been able to get the next part of this document.
I have a JSPDynpage application which is required to consume a webservice. I want to use this proxt to consume the webservice.
Any help or any other document that explains how to use a deployable proxy to consume a web service will be helpful.
Thanks,
SBHi,
Here is an example how to consume the deployable proxy in web application:
http://help.sap.com/saphelp_nw70/helpdata/EN/ca/c8efe3e8a64163b01924ad4ccd706d/frameset.htm
http://help.sap.com/saphelp_nw70/helpdata/EN/5c/971740198d8f5ce10000000a155106/frameset.htm
Regards,
Praveen Gudapati -
Handling of SOAP Faults in SOAP Clients consuming PI Web services
Hi there,
the following is in regards to SOAP fault error handling in a SOAP client that consumes a Web Service published by PI.
I have been reading a number of threads and blogs in regards to this topic and I am still left with some open questions which I hope to get some final answersclarifications through this thread.
In particular the blogs
Handling Web Service SOAP Fault Responses in SAP NetWeaver XI - Handling Web Service SOAP Fault Responses in SAP NetWeaver XI
XI: Propagation of meaningful error information to SOAP Client - XI: Propagation of meaningful error information to SOAP Client
have caused by attention.
Both of these threads are realating to the Fault Message type one can use to return errors back to a SOAP Client (.Net, Java, etc.).
In our scenario we published a number of Web Services through PI that provide functionality to integrate with an R3 back-end system using inbound ABAP Proxies.
The services are standardised and will be consumed by a number of .NetJava applications and systems. The reason for the use of ABAP proxies is the customer specific application logic that is executed in the backend system. The Web services are synchronous and don't use ccBPM in the middle. Transformations are performed in PI combined with various lookups to set default values before the message is passed into the ABAP Framework of the R3 back-end system. The lookups are done against the R3 back-end system using the PI RFC Lookup feature.
The inbound proxies currently return application errors as part of the response message back to the SOAP client. For more critical errors we introduced the use of Fault message types as the method to return the information back to the SOAP Client. This is all working satisfactory.
The questions I have are as follows.
1. When an error occurs at the IE level (e.g. mapping error), ABAP Proxy framework level (e.g. conversion from XML to ABAP format) or Adapter Framework level (Adapter releated error) a different SOAP fault message structure is returned to the SOAP Client than the one used for the application errors. The SOAP fault message structure used in this case is the standard SOAP fault used by PI to return system errors back to the caller. For those SOAP fault messages there is no payload generated that could be mapped to the SOAP fault structure used for the application errors. This would be preferrable as there would be only one Fault message structure used for both inbound ABAP proxy generated fault messages and PI generated fault messages.
Also the error messages generated by PI can be quite cryptic and difficult to interpret at the client end and could be filtered ranslated during message mapping if the payload of the PI generated SOAP fault message could be accessed in a message mapping.
Point 3 of the above thread 2759 indicates that this would be possible but doesn't outline how. Could somebody please clarify this for me as I don't believe that this is really possible ???.
My idea instead was to use the PI SOAP fault message structure to also return application errors. Therefore I would create a Fault message type that matches the PI SOAP fault structure. This would enable the SOAP Client to handle only one SOAP Fault error structure. Would that be something to look into instead ?????.
2. We have been looking at using the integrated WEB AS SOAP adapter instead of using the AF Sender SOAP adapter. While playing with this we encountered differences in the content returned through the SOAP fault generated by PI. A sample is below. Shouldn't the content of these SOAP faults be the same if the error that caused it is the same. Also the SOAP fault returned by the IE SOAP adapter is much more useful in this particular case. Both errors below are the same, a conversion error from XML to ABAP took place in the inbound ABAP proxy framework of the back-end system.
SOAP fault returned when using SOAP Sender adapter of AF
<!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>com.sap.aii.af.ra.ms.api.DeliveryException: XIProxy:PARSE_APPLICATION_DATA:
at com.sap.aii.adapter.xi.ms.XIEventHandler.onTransmit(XIEventHandler.java:455)
at com.sap.aii.af.ra.ms.impl.core.queue.consumer.CallConsumer.onMessage(CallConsumer.java:134)
at com.sap.aii.af.ra.ms.impl.core.queue.Queue.run(Queue.java:916)
at com.sap.aii.af.ra.ms.runtime.MSWorkWrapper.run(MSWorkWrapper.java:56)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:102)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:172)</text>
</s:SystemError>
</detail>
</SOAP:Fault>
</SOAP:Body>
</SOAP:Envelope>
SOAP fault using integrated SOAP adapter of PI IE
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<SOAP:Fault>
<faultcode>SOAP:Server</faultcode>
<faultstring>System Error</faultstring>
<detail>
<s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
<context/>
<code>ABAP.PARSE_APPLICATION_DATA</code>
<text>Error during XML => ABAP conversion (Request Message; error ID: CX_ST_DESERIALIZATION_ERROR; (/1SAI/TXSBE20FF604BAFEF8D990A XML Bytepos.: 564 XML Path: ns1:CreatePORequest(1)POHEADER(2)COMP_CODE(1) Error Text: Data loss occurred when converting ############################## Kernel ErrorId: CONVT_DATA_LOSS))</text>
</s:SystemError>
</detail>
</SOAP:Fault>
</SOAP:Body>
</SOAP:Envelope>
I have been reading threads for hours without being able to find one that answers questions 1 or provides a blog that outlines the approach one should take for error handling in SOAP clients that consume PI Web Services (and covers both PISystem generated faults and faults raised in Proxies).
There may already be a blog or thread and I just missed it.
Any comments are welcome.
Thanks. DieterHi Dieter,
As Bhavesh already mentioned fault messages are used for application errors. The same is described in SAP XI help:
http://help.sap.com/saphelp_nw04/helpdata/en/dd/b7623c6369f454e10000000a114084/frameset.htm
In case of system error (e.g. field length too long in proxy call or error in XI/PI mapping) there seems to be no standard way of handling it and propagating the response to the consumer of webservice.
Each system error is not recognized by SOAP adapter and SOAP adapter exception is raised.
The only bizzare solution that I can see is developing an adapter module and transport wrong message to standard fault message before delivering it to adapter engine:
http://help.sap.com/saphelp_nw04/helpdata/en/a4/f13341771b4c0de10000000a1550b0/frameset.htm
Kind regards,
Wojciech
btw nice thread -
Consuming Client Web Service at Different Servers
We are consuming a third party web service using the following steps :
Third party vendor gave the link of their web service
Created a proxy class using the link.
Called their method through a program.
We are giving some input and getting the corresponding output - We are able to consume the external WS absolutely fine.
If the server location of the above web service changes do we have to follow the above steps all over again that is create new PROXY CLASS??
What if the third party application also have a landscape just like SAP for ex - DEV, QA, PRD - the IP of the web service is different on each system.
The user(who is not a technical person) wants something very simple where they just want to put the web service's new link and system should function as it was with old link.No reply, hope my question is clear to the experts.
-
Consume external web service and experience connection timed out issue
Hi all,
I followed tutorial:http://docs.oracle.com/cd/E18941_01/tutorials/jdtut_11r2_14/jdtut_11r2_14.html to consume external web service.
At step 2,substep 4, I experience the following error:
"DCA-40002: The WSDL document is invalid due to the following reason: WSDLException: faultCode=PARSER_ERROR: Failed to read wsdl file at:"http://www.webservicex.net/WeatherForecast.asmx?WSDL". Caused by : java.net.ConnectException: java.net.ConnectException: Connection timed out: connect."
I have tried to set up proxy:Tools > Preferences->Web Browser and Proxy. But it still doesn't work. Any idea?
Thanks in advance.
Regards,
weiyang
Edited by: user13304960 on Mar 15, 2012 8:42 PM
Edited by: user13304960 on Mar 15, 2012 8:43 PMHi,
Thanks for your reply. I have tried these 2 tutorials before. Both worked well. Publish an web service by myself, then consume it with a client. It works. But for this external wsdl published by USA weather forecast, it doesn't work. Navigate to http://www.webservicex.net/WeatherForecast.asmx?WSDL through firefox, and right response is returned. I wonder why connection timed out occurred and how to deal with it.
Could you please share your experience with me? Thanks.
Thanks. -
How to consume a web service provided by third party system from SAP system
Hi Friends,
Could any of you provide me a clear picture on how to consume a web service from SAP system and is provided by a third party system?
Do we get an URL to create a client proxy for consuming the web service?
Thanx in advance,
RamHi Ram,
of course you cannot supply the WSDL URL. Inside the WSDL (just view it in your browser) you find (usually but not necessary) towards the end something like
<soap:address location="http://www.weather.gov/forecasts/xml/SOAP_server/ndfdXMLserver.php"/>
which is the actual adress of the service.
An example service can be found here:
<a href="http://www.weather.gov/xml/">National Digital Forecast Database</a>
containing the WSDL URL at
<a href="http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl">this address</a>.
You might also want to browse for the amazon webservices which allow you to embed queries against amazon into your application.
have fun,
anton -
Unallowed RFC-XML Tag (SOAP_EINVALDOC) - Web Service using ABAP Proxy
Hi there
I am trying to consume a Web Service using ABAP Proxies. I have done the following in the system:
I configured the HTTP and HTTPS Proxy settings.
I created a package with package interfaces SAI_TOOLS and SAPPINT included under the Use Access tab.
I created the proxy classes by using the WSDL provided by the system I'm trying to interface with.
I created my HTTP destination RFC via SM59.
I configured a logical port for the proxy.
I developed the ABAP code for calling the proxy.
In the code the exception CX_AI_SYSTEM_FAULT gets raised with error message <b>"Unallowed RFC-XML Tag (SOAP_EINVALDOC)"</b> when I call the method for passing data to the destination system in the proxy class.
I had a look at SM21 and the following message was written in the log:
<b>"SOAP Runtime: SOAP Runtime exception: 111 occurred in method XP_READ_TAG of class CL_SOAP_XP at position 1
SOAP Runtime: Exception message: Unallowed RFC-XML Tag (SOAP_EINVALDOC)"</b>. I also looked at SAP Note 919886 which states that it can be dumps in the system, missing configuration or the path prefix of the RFC destination that is incorrect. I cannot find any ST22 entries. The trace file looks as follows:
SAP System ID: DGH
Client: 009
User: COLESKG
System time: 072910
System date: 20070531
SAP Release: 700
Host: hd307c
Operating system: AIX
DB System: ORACLE
Program: ZUK_IPA00003
Processing State: 0
Location: Client
Transport Binding: http://schemas.xmlsoap.org/soap/http
SOAP Application: urn:sap-com:soap:runtime:application:client
SOAP Runtime Protocol: http://www.sap.com/webas/630/soap
/runtime/protocol
SOAP Protocols: <initial>
Request Message: <initial>
Response Message: <initial>
Fault: <initial>
Registry: <initial>
SOAP Roles: <initial>
Trace Level: 3
Logging Level: 2
Monitoring Level: 0
Security Profile: <initial>
WS Security Protocol: <initial>
INFO 07:29:10: SOAP LP Registry CL_SRT_LP_MAINTENANCE->CREATE_CLIENT_APPL() Try to create client application for Proxyclass:
ZES_CO_PROCESS_EMPLOYEE_BATCH LP name: DEFAULT
INFO 07:29:10: SOAP LP Registry CL_SRT_LP_MAINTENANCE->CREATE_CLIENT_APPL() Client application created
INFO 07:29:10: SOAP LP Registry CL_SRT_LP_MAINTENANCE->CREATE_CLIENT_APPL() Try to initialize client application
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT->IF_SOAP_APPLICATION_CS~INIT() Try to initialize application
urn:sap-com:soap:runtime:application:client
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT->INTERNAL_CLIENT_INIT() Create new runtime CL_SOAP_RUNTIME_CLIENT
INFO 07:29:10: SOAP Runtime CL_SOAP_RUNTIME_CLIENT->REGISTER_APPLICATION() Try to register application
INFO 07:29:10: SOAP Runtime CL_SOAP_RUNTIME_CLIENT->REGISTER_APPLICATION() Application registered
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT->INTERNAL_CLIENT_INIT() Read type of transport binding from
configuration
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT->INTERNAL_CLIENT_INIT() Create new transport binding type
http://schemas.xmlsoap.org/soap/http
INFO 07:29:10: SOAP Transport Binding CL_SOAP_TRANSPORT_BINDING_ROOT->IF_SOAP_TRANSPORT_BINDING~INIT() Try to initialize
http://schemas.xmlsoap.org/soap/http
INFO 07:29:10: SOAP Transport Binding CL_SOAP_TRANSPORT_BINDING_ROOT->IF_SOAP_TRANSPORT_BINDING~INIT() http://schemas.xmlsoap
.org/soap/http initialized
INFO 07:29:10: SOAP Transport Binding CL_SOAP_TRANSPORT_BINDING_ROOT->IF_SOAP_TRANSPORT_BINDING~REQUEST() Try to create request message
INFO 07:29:10: SOAP Transport Binding CL_SOAP_TRANSPORT_BINDING_ROOT->IF_SOAP_TRANSPORT_BINDING~REQUEST() Request message created
INFO 07:29:10: SOAP Transport Binding CL_SOAP_TRANSPORT_BINDING_ROOT->IF_SOAP_TRANSPORT_BINDING~RESPONSE() Try to create response message
INFO 07:29:10: SOAP Transport Binding CL_SOAP_TRANSPORT_BINDING_ROOT->IF_SOAP_TRANSPORT_BINDING~RESPONSE() Response message
created
INFO 07:29:10: SOAP Runtime CL_SOAP_RUNTIME_CLIENT->INIT() Try to initialize
INFO 07:29:10: SOAP Runtime CL_SOAP_RUNTIME_CLIENT->INIT() Check transport binding
INFO 07:29:10: SOAP Runtime CL_SOAP_RUNTIME_CLIENT->INIT() Create runtime protocol
INFO 07:29:10: SOAP Runtime Protocol CL_SOAP_RUNTIME_PROTOCOL->IF_SOAP_PROTOCOL~INIT() Try to initialize SOAP Runtime-intrinsic
Protocol as SENDER with Priority 5
INFO 07:29:10: SOAP Runtime Protocol CL_SOAP_RUNTIME_PROTOCOL->INIT_MODULES() Try to create trace header/part
INFO 07:29:10: SOAP Runtime Protocol CL_SOAP_RUNTIME_PROTOCOL->INIT_MODULES() Trace header/part created
INFO 07:29:10: SOAP Runtime Protocol CL_SOAP_RUNTIME_PROTOCOL->INIT_MODULES() Try to create logging header/part
INFO 07:29:10: SOAP Runtime Protocol CL_SOAP_RUNTIME_PROTOCOL->INIT_MODULES() Logging header/part created
INFO 07:29:10: SOAP Runtime Protocol CL_SOAP_RUNTIME_PROTOCOL->IF_SOAP_PROTOCOL~INIT() Protocol initialized
INFO 07:29:10: SOAP Runtime CL_SOAP_RUNTIME_CLIENT->INIT()
Initialized
INFO 07:29:10: SOAP Protocol CL_SOAP_PROTOCOL_FACTORY->CREATE()
Try to create instance for http://www.sap.com/webas/630/soap
/runtime/session/protocol::http://www.sap.com/webas/630/soap
/runtime/session/protocol/srt640_impl
INFO 07:29:10: SOAP Protocol CL_SOAP_PROTOCOL_FACTORY->CREATE()
Instance of CL_SOAP_SESSION_PROTOCOL created for http://www.sap.com/webas/630/soap/runtime/session/protocol::http://www.sap.com/webas/630/soap/runtime/session/protocol/srt640_impl
INFO 07:29:10: SOAP SESSION Protocol CL_SOAP_SESSION_PROTOCOL->IF_SOAP_PROTOCOL~INIT() Try to initialize SOAP Session Protocol
as SENDER with Priority 5
INFO 07:29:10: SOAP SESSION Protocol CL_SOAP_SESSION_PROTOCOL->IF_SOAP_PROTOCOL~INIT() Protocol initialized
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT_GEN->CONFIGURE_FEATURES() Try to configure features
INFO 07:29:10: SOAP HTTP Binding CL_SOAP_HTTP_TPBND_ROOT->IF_SOAP_HTTP_TRANSPORT_BINDING~SET_CLIENT_BY_DESTINATION() Try to
create ICF Client for DESTINATION = ALSB
INFO 07:29:10: SOAP HTTP Binding CL_SOAP_HTTP_TPBND_ROOT->IF_SOAP_HTTP_TRANSPORT_BINDING~SET_CLIENT_BY_DESTINATION() ICF
Client created by DESTINATION
INFO 07:29:10: SOAP HTTP Binding CL_SOAP_HTTP_TPBND_ROOT->IF_SOAP_HTTP_TRANSPORT_BINDING~SET_DESTINATION_URL_PATH() Set
DESTINATION PATH = /SapHRSmartIntegrationWeb/processes/ProcessEmployeeBatch.jpd
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT_GEN->CONFIGURE_FEATURES() Features configured
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT->IF_SOAP_APPLICATION_CS~INIT() Application urn:sap-com:soap
:runtime:application:client initialized
INFO 07:29:10: SOAP LP Registry CL_SRT_LP_MAINTENANCE->CREATE_CLIENT_APPL() Client application initialized
Trace file opened at 20070531 073030 GMT SAP-REL 700,0,95
Error in module XMLParserGetNextElement:773
Id @(#) $Id: //bas/700_REL/src/krn/rfc/xrfcpars.c#2 $
Unallowed RFC-XML Tag
Error in module XMLConverterReadTag:3061
Id @(#) $Id: //bas/700_REL/src/krn/rfc/xrfccnvrt.c#5 $
Unallowed RFC-XML Tag(24)
Error in module ab_soap:4392
Id @(#) $Id: //bas/700_REL/src/krn/rfc/abxrfccal.c#2 $
failed with return code 1
It then must be something in the config. Has anyone got any idea why this message is encountered?
Kind Regards
Gustav Coleske
Message was edited by:
Gustav ColeskeHi,
I have the same problem as described.
Can you give me a little more information about the error you have solved in the proxy.
Thanks for help
John
Maybe you are looking for
-
Spent thousands of dollars and can't even use basic features
MacBook Pro - $2000 iPhone - $800 Apple TV - $100 What the **** is going on with Apple? I can't sync my iPhone and MacBook Pro. Sometimes is discovers both devices but then fails to sync. Other times neither recognises each other even when they're bo
-
Does anyone know how to add a preface page at the beginning of the book in ibooks author once the book is written? No matter how I try to add a Preface page, it goes to the end of the book.
-
How to create new storage group and mailbox database on exchange 2007 CCR
Hi, Our Environment: Exchange 2007 SP3 CCR. Now I want to create a new storage group with edb file and log files on the new drive. My plan is as below: Once we have new drive ready on both active node and passive node, 1): Create new storage group wi
-
JDeveloper settings - change the default code editor view for JSPx files
Hi, when you open a .JSPX or JSP page the editor opens in 'design' mode. Is there a way to change this default behavior and open in 'source' mode? I write the JSF/JSP pages editing code and every time I open a new page I have to wait till the IDE ope
-
Itunes to run on flash drive, can it be done?
I would like to load my Itunes and library on a flash drive, is it possible?