Exceptions Trying to Consume Web Service
My ColdFusion web site consumes ASP.NET web services to
access some .NET business objects. I am seeing some exceptions
intermittently. See sample error message below. Note that
"UploadDocument" is the web method I am trying to invoke.
The part of the error message "java.net.SocketException:
Connection reset" leads me to think there may be a comminication
failure, possibly indicating a DNS problem. I have changed my CF
code to reference the ASP.NET web service WSDL by IP address but
this has not solved my problem.
Error message:
Could not perform web service invocation "UploadDocument".
Here is the fault returned when invoking the web service
operation:<br> <pre>AxisFault faultCode: {
http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode: faultString: java.net.SocketException: Connection
reset faultActor: faultNode: faultDetail: {
http://xml.apache.org/axis/}stackTrace:java.net.SocketException:
Connection reset at
java.net.SocketInputStream.read(SocketInputStream.java:168) at
java.io.BufferedInputStream.fill(BufferedInputStream.java:183) at
java.io.BufferedInputStream.read(BufferedInputStream.java:201) at
org.apache.axis.transport.http.HTTPSender.readHeadersFromSocket(HTTPSender.java:583)
at
org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:143)
at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at
org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at
org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) at
org.apache.axis.client.Call.invokeEngine(Call.java:2765) at
org.apache.axis.clie... </pre> <br>The error occurred
on line 100.
My Environment:
Both the CF and ASP.NET web sites are on the same physical
server, but different IP addresses.
ColdFusion: version 7.0.2 Enterprise
JVM: Sun 1.4.2_15
OS: Windows 2003 R2, Service Pack 2
Any help is resolving this issue is appreciated.
Hi Sanjay
You can consume webservices in ABAP but its better to use XI in mid to avoid point to point communication. Using XI you can have a central hub for all services you consume or publish
Check this link as well
BSP a Developer's Journal Part XIV - Consuming WebServices with ABAP
Thanks
Gaurav
Similar Messages
-
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. -
Problem consuming web service created by ABAP via standalone java client
I'm trying to consume web service created by ABAP in R3 system via standalone java client. I should be getting a string reply after consumed the web service (ZSMS_INBOUND), but so far i received null. I cant find any exception or log to trace the problem. Any help would be appreciated. Is there anything wrong with my client calling the web service?
public void myMethod{
// TODO : Implement
try{
Stub stub = (Stub)new ZSMS_INBOUNDServiceImpl().getLogicalPort();
stub._setProperty(javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY,"http://mytest:8080/sap/bc/srt/rfc/sap/ZSMS_INBOUND?sap- client=100&wsdl=1.1&mode=sap_wsdl");
inboundService = (ZSMS_INBOUND) stub;
BAPIRET2 str = inboundService.ZSMS_INBOUND(date, message, modemId, smsId, tel, time);
ackDeliveryArray<i> = str.toString();
}catch (Exception e) {
e.printStackTrace();
Generated following SAP help standalone proxy creation steps.
***files fr SEIs
ZSMS_INBOUND.java (interface)
ZSMS_INBOUNDService.java (interface)
ZSMS_INBOUNDServiceImpl.java
ZSMS_INBOUNDSoapBindingStub.java
***files fr Proxy classes
ZSMS_INBOUND.java
ZSMS_INBOUNDResponse.java
BAPIRET2.java
.... many more files
the wsdl is as below (generated by ABAP):
<?xml version="1.0" encoding="utf-8" ?>
- <wsdl:definitions targetNamespace="urn:sap-com:document:sap:rfc:functions" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:n0="http://www.sap.com/webas/630/soap/features/authentication/" xmlns:sap="http://www.sap.com/webas/630/wsdl/features" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="urn:sap-com:document:sap:rfc:functions" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <wsdl:types>
- <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:sap-com:document:sap:rfc:functions" targetNamespace="urn:sap-com:document:sap:rfc:functions" elementFormDefault="unqualified" attributeFormDefault="qualified">
- <xsd:simpleType name="char1">
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="1" />
</xsd:restriction>
</xsd:simpleType>
- <xsd:simpleType name="char10">
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="10" />
</xsd:restriction>
</xsd:simpleType>
- <xsd:simpleType name="char17">
+ <xsd:restriction base="xsd:string">
<xsd:maxLength value="17" />
</xsd:restriction>
</xsd:simpleType>
- <xsd:simpleType name="char170">
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="170" />
</xsd:restriction>
</xsd:simpleType>
- <xsd:simpleType name="char20">
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="20" />
</xsd:restriction>
</xsd:simpleType>
- <xsd:simpleType name="char220">
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="220" />
</xsd:restriction>
</xsd:simpleType>
- <xsd:simpleType name="char30">
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="30" />
</xsd:restriction>
</xsd:simpleType>
- <xsd:simpleType name="char32">
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="32" />
</xsd:restriction>
</xsd:simpleType>
- <xsd:simpleType name="char50">
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
- <xsd:simpleType name="date">
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="10" />
<xsd:pattern value="\d\d\d\d-\d\d-\d\d" />
</xsd:restriction>
</xsd:simpleType>
- <xsd:simpleType name="numeric3">
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="3" />
<xsd:pattern value="\d*" />
</xsd:restriction>
</xsd:simpleType>
- <xsd:simpleType name="numeric6">
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="6" />
<xsd:pattern value="\d*" />
</xsd:restriction>
</xsd:simpleType>
- <xsd:simpleType name="time">
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="8" />
<xsd:pattern value="\d\d:\d\d:\d\d" />
</xsd:restriction>
</xsd:simpleType>
- <xsd:complexType name="BAPIRET2">
- <xsd:sequence>
<xsd:element name="TYPE" type="tns:char1" />
<xsd:element name="ID" type="tns:char20" />
<xsd:element name="NUMBER" type="tns:numeric3" />
<xsd:element name="MESSAGE" type="tns:char220" />
<xsd:element name="LOG_NO" type="tns:char20" />
<xsd:element name="LOG_MSG_NO" type="tns:numeric6" />
<xsd:element name="MESSAGE_V1" type="tns:char50" />
<xsd:element name="MESSAGE_V2" type="tns:char50" />
<xsd:element name="MESSAGE_V3" type="tns:char50" />
<xsd:element name="MESSAGE_V4" type="tns:char50" />
<xsd:element name="PARAMETER" type="tns:char32" />
<xsd:element name="ROW" type="xsd:int" />
<xsd:element name="FIELD" type="tns:char30" />
<xsd:element name="SYSTEM" type="tns:char10" />
</xsd:sequence>
</xsd:complexType>
- <xsd:element name="ZSMS_INBOUND">
- <xsd:complexType>
- <xsd:sequence>
<xsd:element name="DATE" type="tns:date" />
<xsd:element name="MESSAGE" type="tns:char170" />
<xsd:element name="MODEMID" type="tns:char10" />
<xsd:element name="SMSID" type="tns:char17" />
<xsd:element name="TEL" type="tns:char20" />
<xsd:element name="TIME" type="tns:time" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
- <xsd:element name="ZSMS_INBOUNDResponse">
- <xsd:complexType>
- <xsd:sequence>
<xsd:element name="RETURN" type="tns:BAPIRET2" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
- <wsdl:message name="ZSMS_INBOUND">
<wsdl:part name="parameters" element="tns:ZSMS_INBOUND" />
</wsdl:message>
- <wsdl:message name="ZSMS_INBOUNDResponse">
<wsdl:part name="parameters" element="tns:ZSMS_INBOUNDResponse" />
</wsdl:message>
- <sap:Feature name="design_0" uri="http://www.sap.com/webas/630/soap/features/authentication/">
- <sap:Property qname="n0:AuthenticationLevel">
<sap:Option value="n0:None" />
</sap:Property>
</sap:Feature>
- <wsdl:portType name="ZSMS_INBOUND">
<sap:useFeature feature="tns:design_0" />
- <wsdl:operation name="ZSMS_INBOUND">
<wsdl:input message="tns:ZSMS_INBOUND" />
<wsdl:output message="tns:ZSMS_INBOUNDResponse" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="ZSMS_INBOUNDSoapBinding" type="tns:ZSMS_INBOUND">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="ZSMS_INBOUND">
<soap:operation soapAction="" />
- <wsdl:input>
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="ZSMS_INBOUNDService">
- <wsdl:port name="ZSMS_INBOUNDSoapBinding" binding="tns:ZSMS_INBOUNDSoapBinding">
<soap:address location="http://mytest:8080/sap/bc/srt/rfc/sap/ZSMS_INBOUND?sap-client=100" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>I'm now able to consume the web service, but with the error as below:
Warning ! Protocol Implementation [com.sap.engine.services.webservices.jaxrpc.wsdl2java.features.builtin.MessageIdProtocol] could not be loaded (NoClassDefFoundError) !
Error Message is :com/sap/guid/GUIDGeneratorFactory
BAPIRET2 mappingInfo:
TYPE TYPE false false 11
ID ID false false 11
NUMBER NUMBER false false 11
MESSAGE MESSAGE false false 11
LOG_NO LOG_NO false false 11
LOG_MSG_NO LOG_MSG_NO false false 11
MESSAGE_V1 MESSAGE_V1 false false 11
MESSAGE_V2 MESSAGE_V2 false false 11
MESSAGE_V3 MESSAGE_V3 false false 11
MESSAGE_V4 MESSAGE_V4 false false 11
PARAMETER PARAMETER false false 11
ROW ROW false false 11
FIELD FIELD false false 11
SYSTEM SYSTEM false false 11
My java code is :
public class MyTest {
public static void main(String[] args){
try{
Stub stub = (Stub)new ZSMS_INBOUNDServiceImpl().getLogicalPort();
stub._setProperty(javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY,"http://mytest:8080/sap/bc/srt/rfc/sap/ZSMS_INBOUND?sap-client=100");
ZSMS_INBOUND inboundService = (ZSMS_INBOUND) stub;
BAPIRET2 str = inboundService.ZSMS_INBOUND(param1,param2,param3,param4,param5,param6);
System.out.println(str.toString());
}catch (Exception e) {
e.printStackTrace(); -
Consuming Web Services in SSIS Script Task
Hello
Sorry for my English, I' ll try to explain my problem.
I am new to SSIS. Using this article http://blogs.msdn.com/b/dataaccesstechnologies/archive/2010/01/28/consuming-web-services-in-ssis-script-task.aspx I have tried to consume web service.
1. I have created proxy class using VS Command Prompt
2. A have added proxy class to Script Task
3. But when I want to create the instance of the proxy class, it can be accessed from the ScriptMain.cs.
I will be very pleased for the help!perhaps you missed this step:
--> Modify the code and add Credentials before calling the web method:
Public
SubMain()
Dim
ws As NewService1
ws.Credentials =
New System.Net.NetworkCredential("user name",
"password",
"domain name")
MsgBox("Square
of 2 = "& ws.Square(2))
Dts.TaskResult = Dts.Results.Success
End
Sub
Arthur
MyBlog
Twitter -
Consume Web Service in Web Dynpro
Hi Experts,
I´m currently trying to learn web dynpro development.
Scenario: I have one component which embed two views. One view is for enter customer number and in the other view I will see the name of the customer. The name of this customer is provided in a sap erp2005. I have develop a function modul and wich gave me the appropriate data(customer name). Then I create a web service base on this function module.
When I test this web serviec in WSNavigator, I get the customer name, so the web service is working well.
My Problem is: I can´t invoke this Web Service in Web Dynpro. My steps to invoke web service were: create a model with the web service wsdl and then I add this model in the component (in "Used Models").
I have create a application and assign it to the component. When I "Deploy new archive and Run" the application I be come the error: "Configuration not found for application: demo.sap.com/test_wd3,serviceRefId:7fecf23b-0895-48f3-9902-0e7015a705c3. Please check the configuration details from the NWA. You may have not assigned the Service Group to a Provider System, or the generation of the configuration has failed."
What do I have to consider or to set up?
It is right to assign the input field to the context parameter?
PS: I have followed the steps in this tutorial, but I don´t use XI or PI
http://www.riyaz.net/blog/xipi-consuming-xi-web-services-using-web-dynpro-part-ii/technology/sap/7/
best regards
Anna von Landsberg
Edited by: Anna_von_Landsberg on Dec 8, 2010 4:48 PMHi,
I have the following message error:
Exception on execution of web service with WSDL URL
'http://j2eeserver:port/xxxx/Config1?wsdl'
with operation 'RequestNode' in interface
'urn:xxxxx'
When i debugged it, I found the following error:
Cannot find the required parameter [unTipoProducto] in request message content.
What is wrong?, I pasted the code of my method, that call to web service in the component controller.
public void Alta_Entrega( )
//@@begin Alta_Entrega()
String tipoProducto = wdContext.currentAlta_EntregaElement().getUnTipoProducto();
Request_Alta_Entrega entregaMO = wdContext.currentRequest_Alta_EntregaElement().modelObject();
if (!wdContext.currentAlta_EntregaElement().getUnTipoProducto().equalsIgnoreCase("")){
IWDMessageManager manager = wdComponentAPI.getMessageManager();
if (logger.beDebug()) {
entregaMO.wdSetInvocationLogEnabled(true); //switch on logging for this model object
try{
entregaMO.setInvokerProperty(Stub.USERNAME_PROPERTY,"xxx");
entregaMO.setInvokerProperty(Stub.PASSWORD_PROPERTY,"xxx");
entregaMO.execute();
wdContext.nodeResponse().invalidate();
wdContext.nodeAlta_Entrega().invalidate();
}catch (Exception e){
manager.reportException(e.getMessage(),false);
logger.debugT(entregaMO.wdGetRequestLog()); //request log (HTTP header + SOAP request)
logger.debugT(entregaMO.wdGetResponseLog()); //response log (HTTP header + SOAP response)
logger.debugT(entregaMO.associatedModelClassInfo().getModelInfo().toString()); //model metadata in XML format
logger.debugT(entregaMO.toString()); //model object tree in XML format (= model context node content)
I hope you can understand me, because my english is very bad!!.
Thank you. -
How to consume WEB SERVICES from ABAP ??
Q: How to consume WEB SERVICES from ABAP program??
the point here is i am using SAP release 620 and the creation of proxy is out of scenario
and also no XI. Its only through ABAP program i need to consume one web service (its a HTTPS one ),
Using cl_http_client... i tried it but i am totally confused of whats happening ???
Req some senior ppl advice on the same/approach.
any hints will suffice my way of approach...!!!
Please do put in your valuable advices..!!
Thanks in advance..!!!!Hello Srinivas,
Following is the code for calling web service:
data: client type ref to if_http_client,
host type string value 'server url',
service type string value '8080',
path type string value '/sap/public/ping',
errortext type string,
proxy_service type string,
scheme type i value 1.
call method cl_http_client=>create
exporting host = host
service = service
proxy_host = host
proxy_service = service
scheme = scheme
importing client = client
exceptions
argument_not_found = 1
internal_error = 2
plugin_not_active = 3
others = 4.
case sy-subrc.
when 0.
write 'Server reached successfully'.
when others.
write: 'sy-subrc =', sy-subrc.
endcase.
Once you got the client object you can call following methods:
"Set the requrie URL for the web service you want to call. This is not WSDL anyway!!
cl_http_utility=>set_request_uri( request = client->request
uri =' url 2 be called ').
*Then you can call send method with proper inputs for sending request to WS
CALL METHOD client->send
Then you can use receive method for getting the response
CALL METHOD client->receive
*You can get last error in case of exceptions
CALL METHOD cl_http_client=>get_last_error
*Close the client object
CALL METHOD client->close
For more information on full code refer my link in previous replay.
Thanks,
Augustin.
Edited by: Augustarian on Aug 18, 2009 1:49 PM -
Hi All,
I am looking for some advice in regards to consuming web services via UCCX scripting. In the past i have been doing so successfully in our environment by using document steps and Xpath expressions for both SOAP and REST web services that were configured to allow an HTTP GET request (tomcat running on apache server to expose public methods written in Java).
Our company is in the midst of a Microsoft Dynamics 2012 (r2) implementation and I have the task of establishing communication with AX in order to pass information back and forth. Our consultants with dynamics have setup a test web service using AIF, but it seems that these services require authentication. Currently the test web service is using NTLM authentication and exposed via SOAP. Apparently it is not possible to use HTTP GET for these web services.
This means i had to write java code in Set steps to communicate with the SOAP services. I was able to successfully do this for some of our own web services using SOAP. however i am having problems with the AX test web service due to the authentication. (Thanks to Gergely Szabo, as i used some of his code found here: https://supportforums.cisco.com/document/97736/uccx-8x-really-simple-soap-client-no-custom-jar )
I am hoping someone has some experience with having consumed AIF web services via Java or at least Java written within a UCCX script. Or if someone has been able to implement authentication and can provide some details for how that works? I don't even know if i can authenticate via NTLM from UCCX scripts due to it being a windows authentication protocol and not linux based.
Any thoughts or ideas would be appreciated!
Thanks,
Kevin.Hi,
Thus far I have been unsuccessful in my attempts to communicate with this particular web service. The consults did create another service using Basic HTTP Auth and I was able to consume and use the service using SOAPUI just fine.
However, my soapResponseString code (small tweak of Gergely's code) is not working. After 2-3 minutes of sitting on that step in the CRS Editor my stacktrace exception is thrown and shows "Connection timed out". This is way past the time for the 5000ms read timeout, so I imagine the initial communication is successful but then eventually times out due to not returning a response?
I tried to mimic the headers SOAPUI uses from it's HTTP Log, hence the number of urlCon.setRequestProperty lines..
CODE for Set soapResponseString below:
// create a ByteArrayOutputStream - this is actually a buffer
// we are going to use to store the response coming from the SOAP server
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
// this is quite unnecessary: assigning the value of the soapRequest (still holding our XML document)
// to another variable, named content, type String; but anyway, it's just cleaner
String content = soapRequest;
// specify a timeout - 5000 milliseconds - if the web server does not start sending back
// anything within this timeframe, an exception will be raised
int readTimeout = 5000;
try {
// a new URL, which is the soapServiceEndpoint variable value (http://ip:port/ etc):
java.net.URL url = new java.net.URL(soapServiceEndpoint);
// creating a HTTP connection to the above URL:
java.net.HttpURLConnection urlCon = (java.net.HttpURLConnection) url.openConnection();
// setting some important header parameters, first of all, content length, this is most likely expected
// by the SOAP server
urlCon.setFixedLengthStreamingMode(content.length());
// setting the timeout:
urlCon.setReadTimeout(readTimeout);
// we tell Java we will do input (in other words, we will read):
urlCon.setDoInput (true);
// we tell Java we will do output (in other words, we will send):
urlCon.setDoOutput (true);
// we tell Java not to cache:
urlCon.setUseCaches (false);
// we are using HTTP POST
urlCon.setRequestMethod("POST");
// finally, we set the Content-Type header,
// this way we are telling the SOAP server we are sending an XML, using the UTF-8 charset
urlCon.setRequestProperty("Content-Type","text/xml;charset=UTF-8");
// here we are sending our Basic Auth - authStringEnc is a base64 encoded user:pass credential that's initialized in a previous step
urlCon.setRequestProperty("Authorization","Basic " + authStringEnc);
//set some other header information for the request required by the AIF Web Service
urlCon.setRequestProperty("SOAPAction","http://tempuri.org/myService/getSiteId");
urlCon.setRequestProperty("Host", "myServer.myDomain.com:8080");
urlCon.setRequestProperty("Connection","Keep-Alive");
urlCon.setRequestProperty("User-Agent","Java/1.6.0_29");
urlCon.setRequestProperty("Accept-Encoding","gzip,deflate");
// opening an OutputStream (this is a one-way channel towards the SOAP server:
java.io.DataOutputStream output = new java.io.DataOutputStream(urlCon.getOutputStream());
// we write the contents of the content variable (= soapRequest = XML document):
output.writeBytes(content);
// telling Java to flush "speed up!" and then close the stream:
output.flush();
output.close();
// now getting the InputStream (getting a one way channel coming from the SOAP server):
java.io.DataInputStream input = new java.io.DataInputStream(urlCon.getInputStream());
// buffered read from the InputStream, buffer size 4Kilobytes (= 4096 bytes):
// and the buffer is always written to the other buffer, named baos, that we specified
// on the first line of this block of code
int bufSize = 4096; // buffer size, bytes
byte[] bytesRead = new byte[bufSize];
int bytesReadLength = 0;
while(( bytesReadLength = input.read( bytesRead )) > 0 ) {
baos.write(bytesRead,0,bytesReadLength);
} //while block ends here
// closing the InputStream:
input.close();
// closing the baos buffer
baos.close();
} catch (Exception e) {
// again, if an error occurs, let's just send the stack trace to stdout (stdout.log)
// and then return null or can we can return e.getMessage() to see the exception caught inside the script
e.printStackTrace();
return e.getMessage();
//return null;
} // try..catch block ends here
// construct a new String, and return that to the CRS script:
return new String(baos.toByteArray());
} // closure ends here -
Consume Web Service in EJB Application
Hi Experts,
I have EJB Application with some Java Classes.My Requirement is to Consume Web Service in EJB Application.
I am new to EJB Application.Please share if have any ideas regarding the same.
Thanks & Regards,
SatheshKumar RHi Vijay,
Thanks for the Reply.
Please provide the JAR Files i need to add.
I had tried to consume the web service by using the java class in Java Project ie EJB.
After creating the Project i will import the WSDL file in that Project and create the Client Application.
The Request and Response java class is created by importing the WSDL file.
The Client Java Class is created to access the Request and Response objects.
After this Main class is created and I have run the application to execute the Client Java Class. During this time its shows some error.
The Error Message are:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sap/engine/interfaces/sca/logtrace/CallEntry$TraceLevel
at com.sap.engine.services.webservices.espbase.client.bindings.ConfigurationUtil.getTransportBinding(ConfigurationUtil.java:249)
at com.sap.engine.services.webservices.espbase.client.bindings.ConfigurationUtil.createClientConfiguration(ConfigurationUtil.java:109)
at com.sap.engine.services.webservices.espbase.client.jaxws.metadata.InterfaceMetadata.createClientConfigurationContext(InterfaceMetadata.java:178)
at com.sap.engine.services.webservices.espbase.client.jaxws.metadata.InterfaceMetadata.getProxy(InterfaceMetadata.java:70)
at com.sap.engine.services.webservices.espbase.client.jaxws.core.SAPServiceDelegate.getPort(SAPServiceDelegate.java:258)
at javax.xml.ws.Service.getPort(Service.java:92)
at com.sap.tutorial.testwebser1ejb.TestAddService.getTestAddPort(TestAddService.java:38)
at com.sap.tutorial.testwebser1ejb.TestAddClient.testAdd(TestAddClient.java:12)
at com.sap.tutorial.testwebser1ejb.MainClass.main(MainClass.java:12)
Caused by: java.lang.ClassNotFoundException: com.sap.engine.interfaces.sca.logtrace.CallEntry$TraceLevel
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
... 9 more
Thanks & Regards,
SatheshKumar R -
Windows authentification while consuming web service from ABAP
Hi All,
We are consuming web service from ABAP, we have created client proxy in SE80 and configured logical port in LPCONFIG.
This one was working fine. Now we have added windows user authentification to access this service.
Now when I'm trying to regenerate this proxy in R/3 it is asking for user and password. When I enter these details this one is not working.
If I access this service direcly from internet explorer and I enter same user and password then I would able to access this service.
Could you please let me know how to handle this.
Regards
VikramThe dialog that is produced by HTTP Destination object of the logical port is designed only for use within Classic Dynpro applications. There is no prompt produced when running in Web Dynpro. If possible assign a generic user within the logical port definition and this will be used automatically by all users.
-
To consume web service in ABAP is it required that server should be XI.
Hi ,
I am trying to connect to a webservice from netweaver 7.0 systemand it gives an error " Not configured as integration engine". Is it required to have integration engine to consume web service.
SanjayHi Sanjay
You can consume webservices in ABAP but its better to use XI in mid to avoid point to point communication. Using XI you can have a central hub for all services you consume or publish
Check this link as well
BSP a Developer's Journal Part XIV - Consuming WebServices with ABAP
Thanks
Gaurav -
Biztalk 2010 - Consume Web Service with Certificate
Hi
I have to consume a java web service with Biztalk that requires authentication via a client certificate. Until now I have not been able to consume any web service where any kind of authentication was needed. Simple web services without authentication are
no problem. Also using SoapUI works perfectly fine.
I am generating the XSDs and the port binding with the WCF wizard in VS2010. I've read several comments that it's not possible to consume web services with the WCF-WSHttp adapter when the message format should be SOAP 1.1. Therefore I'm trying with the WCF-BasicHttp
and WCF-Custom adapters, but I did not suceed in receiving a positive response yet.
The web service I want to consume uses a client certificate (with a private key) and two root certificates. When I use the BasicHttp adapter I choose either 'Transport' or 'TransportWithMessageCredential' but none of them work. I also have to supply a client
and a service certificate. I always use the one with the private key for the client but I'm not sure which one I have to use for the service. Is there a possibility that I have to provide both root certificates and if so, how can I achieve this?
Hope the question makes sense somehow... thanks for any input.
Error message that I receive currently is that the server needs a client certificate. However I attached it in the send port properties under the tab "Security" => mode "TransportWithMessageCredential".Adapter: WCF-Custom
Binding: customBinding
Cannot send pictures (yet).
<configuration>
<enterpriseLibrary.ConfigurationSource selectedSource="ESB File Configuration Source" />
<system.serviceModel>
<client>
<endpoint address="...." behaviorConfiguration="EndpointBehavior" binding="customBinding" bindingConfiguration="ReceiptBinding" contract="BizTalk" name="WebServicePort" />
</client>
<behaviors>
<endpointBehaviors>
<behavior name="EndpointBehavior">
<clientCredentials>
<clientCertificate findValue="..." x509FindType="FindByThumbprint" />
<serviceCertificate>
<defaultCertificate findValue="..." storeLocation="LocalMachine" storeName="AuthRoot" x509FindType="FindByThumbprint" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior" />
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<clear />
<binding name="ReceiptBinding">
<textMessageEncoding messageVersion="Soap11" />
<security authenticationMode="MutualCertificate" />
<httpsTransport proxyAuthenticationScheme="Basic" requireClientCertificate="true" />
</binding>
</customBinding>
</bindings>
</system.serviceModel>
</configuration> -
Consuming Web Services in 11.2 does not work (UTL_DBWS)
Hello
i read some documents for consuming web services on the internet , but i get an error when i call add_numbers function as follows:
i connected on WSUSER , then
SQL> select add_numbers(1,3) from dual;
The Error message is:
ERROR at line 1:
ORA-29532: Java call terminated by uncaught Java exception:
java.lang.IllegalAccessException: java.lang.ExceptionInInitializerError
ORA-06512: at "WSUSER.UTL_DBWS", line 193
ORA-06512: at "WSUSER.UTL_DBWS", line 190
ORA-06512: at "WSUSER.ADD_NUMBERS", line 25"
I use the following steps to setup the UTL_DBWS :
1- Create new user 'WSUSER'
2- Run the UTL_DBWS scripts ( utl_dbws_decl.sql , utl_dbws_body.sql) on WSUSER.
3- Execute this command
loadjava -u scott/tiger -r -v -f -genmissing dbwsclientws.jar dbwsclientdb11.jar
4- Log in as sys and grant these privileges to our new user:
execute dbms_java.grant_permission('WSUSER','SYS:java.util.PropertyPermission','http.proxySet','write');
execute dbms_java.grant_permission('WSUSER','SYS:java.util.PropertyPermission','http.proxyHost', 'write');
execute dbms_java.grant_permission('WSUSER','SYS:java.util.PropertyPermission','http.proxyPort', 'write');
execute dbms_java.grant_permission('WSUSER','SYS:java.lang.RuntimePermission', 'accessClassInPackage.sun.util.calendar','');
execute dbms_java.grant_permission('WSUSER','SYS:java.lang.RuntimePermission','getClassLoader','');
execute dbms_java.grant_permission('WSUSER','SYS:java.net.SocketPermission','*','connect,resolve');
execute dbms_java.grant_permission('WSUSER','SYS:java.util.PropertyPermission','*','read,write');
execute dbms_java.grant_permission('WSUSER','SYS:java.lang.RuntimePermission','setFactory','');
execute dbms_java.grant_permission('WSUSER','SYS:java.lang.RuntimePermission', 'createClassLoader', '' )
5- Create add_numbers function on wsuser to test utl_dbws:
CREATE OR REPLACE FUNCTION add_numbers (p_int_1 IN NUMBER,
p_int_2 IN NUMBER)
RETURN NUMBER
AS
l_service UTL_DBWS.service;
l_call UTL_DBWS.call;
l_wsdl_url VARCHAR2(32767);
l_namespace VARCHAR2(32767);
l_service_qname UTL_DBWS.qname;
l_port_qname UTL_DBWS.qname;
l_operation_qname UTL_DBWS.qname;
l_xmltype_in SYS.XMLTYPE;
l_xmltype_out SYS.XMLTYPE;
l_return NUMBER;
BEGIN
l_wsdl_url := 'http://www.oracle-base.com/webservices/server.php?wsdl';
l_namespace := 'http://www.oracle-base.com/webservices/';
l_service_qname := UTL_DBWS.to_qname(l_namespace, 'Calculator');
l_port_qname := UTL_DBWS.to_qname(l_namespace, 'CalculatorPort');
l_operation_qname := UTL_DBWS.to_qname(l_namespace, 'ws_add');
l_service := UTL_DBWS.create_service (
wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),
service_name => l_service_qname);
l_call := UTL_DBWS.create_call (
service_handle => l_service,
port_name => l_port_qname,
operation_name => l_operation_qname);
l_xmltype_in := SYS.XMLTYPE('<?xml version="1.0" encoding="utf-8"?>
<ws_add xmlns="' || l_namespace || '">
<int1>' || p_int_1 || '</int1>
<int2>' || p_int_2 || '</int2>
</ws_add>');
l_xmltype_out := UTL_DBWS.invoke(call_Handle => l_call,
request => l_xmltype_in);
UTL_DBWS.release_call (call_handle => l_call);
UTL_DBWS.release_service (service_handle => l_service);
l_return := l_xmltype_out.extract('//return/text()').getNumberVal();
RETURN l_return;
END;
6- Test the function
Select add_numbers(1,2) from dual
on the test i get the error message :
ERROR at line 1:
ORA-29532: Java call terminated by uncaught Java exception:
java.lang.IllegalAccessException: java.lang.ExceptionInInitializerError
ORA-06512: at "WSUSER.UTL_DBWS", line 193
ORA-06512: at "WSUSER.UTL_DBWS", line 190
ORA-06512: at "WSUSER.ADD_NUMBERS", line 25
anyone have an idea to resolve this error .
thanks alotHi.
Looking at the code, it seems it is my article you are asking about.
http://www.oracle-base.com/articles/10g/utl_dbws10g.php
I've just run through it on an 11.2 instance and it works fine for me.
Make sure your server has access to the Internet and make sure the java classes are loaded successfully.
Cheers
Tim... -
Error consuming Web service from an ABAP Program
Hello guys,
I'm trying to consume a Web Service that is exposed in the internet. The conecction to the Web Service its via SSL.
I'm having a problem at the moment I call the web service from my abap program. But I'm able to test the same web service, from the SE80 tx with out trouble.
I have identify that there is a difference in the SOAP envelope, that its received in the Web service, when I call it from the test enviorment and when I call it from the program.
This is how it is received from the TEST tool (a succesfull call of th WS) :
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header><n0:Trace xmlns:n0="http://www.sap.com/webas/630/soap/features/runtime/tracing/"><TraceLevel xmlns="http://www.sap.com/webas/630/soap/features/runtime/tracing/">Error</TraceLevel></n0:Trace></soap-env:Header><soap-env:Body><nr1:putXMLDocument xmlns:nr1="http://bel.bci.cl/WsBEL/services/Carga"><body><?xml version="1.0" encoding="ISO-8859-1"?><Mensaje><RutEmpresa><Numero>76555400</Numero><Digito>4</Digito></RutEmpresa><RutUsuario><Numero>12307972</Numero><Digito>8</Digito></RutUsuario><Convenio>58422</Convenio><Pin>aro79728</Pin><Archivo><Tipo>PPR</Tipo><Plantilla>2142970592</Plantilla><Nombre>cargatest174.txt</Nombre><Cuerpo><![CDATA[G126919727 JORGE CRISTIAN VARGAS ROMERO 0000VVC01600000000000000000000245FAC0000000089900032000021030000010000000000190000 2910200714082008Boletas honorarios|]]></Cuerpo></Archivo><Fecha>20080814</Fecha></Mensaje></body></nr1:putXMLDocument></soap-env:Body></soap-env:Envelope>
And this is how it is received when I consume the web service from the ABAP program.
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header><n0:Trace xmlns:n0="http://www.sap.com/webas/630/soap/features/runtime/tracing/"><TraceLevel xmlns="http://www.sap.com/webas/630/soap/features/runtime/tracing/">Error</TraceLevel></n0:Trace></soap-env:Header><soap-env:Body><nr1:putXMLDocument xmlns:nr1="http://bel.bci.cl/WsBEL/services/Carga"><body><?xml version="1.0" encoding="utf-8" ?><nr1:putXMLDocument xmlns:nr1="http://bel.bci.cl/WsBEL/services/Carga"><body><?xml version="1.0" encoding="ISO-8859-1"?><Mensaje><RutEmpresa><Numero>76555400</Numero><Digito>4</Digito></RutEmpresa><RutUsuario><Numero>12307972</Numero><Digito>8</Digito></RutUsuario><Convenio>58422</Convenio><Pin>aro79728</Pin><Archivo><Tipo>PPR</Tipo><Plantilla>2142970592</Plantilla><Nombre>cargatest174.txt</Nombre><Cuerpo><![CDATA[G126919727 JORGE CRISTIAN VARGAS ROMERO 0000VVC01600000000000000000000245FAC0000000089900032000021030000010000000000190000 2910200714082008Boletas honorarios|]]></Cuerpo></Archivo><Fecha>20080814</Fecha></Mensaje></body></nr1:putXMLDocument></body></nr1:putXMLDocument></soap-env:Body></soap-env:Envelope>
As you can see, it is generating a nr1:putXMLDocument tag, that it should not go there.
Why do you think that this situation is happening? Please guys, this is very important, and need your help. Thanks in advance.
Samuel.BSP a Developer's Journal Part XIV - Consuming WebServices with ABAP
Calling WebServices from ABAP via HTTPS
Consuming Web Service from ABAP by Durairaj Athavan Raja
Search on SDN wiki, and you will find above mentioned links. -
Consuming Web Service from ABAP
I'm using WAS 6.4 SP10.
I'm trying to consume a web service from our Intranet using instructions from ABAP256 from Teched 04.
I get an error when I try to create a Proxy object.
From SE80
Enterprise Services>Create>Proxy Object
URL/HTTP Destination:
http://server/ServiceGATP/ServiceGATP.asmx?wsdl
HTTP error (return code 400, message
"ICM_HTTP_CONNECTION_FAILED")
I've tried with ABAP web services and that works great. But no success with non ABAP Web Services.
From internet explorer the URL above seems fine. I can call it from a .NET application and it works great.
Any suggestions?
Could it be a system setup issue.
Regards,
LavaughnHi Lavaughn,
Try maintaining HTTP proxy setting using transaction SM59->RFC->HTTP Proxy Configuration. I suspect your WAS server also need to use proxy server for accessing internet.
Regards,
Sanjeev -
Unable to consume web service. LPX-00104: Warning: element "html"
Dear All,
I am new to this posting stuff. Right away i desperate need help from you guys. I am using pl/sql to consume web service initially it was working fine but not it's throwing the exception i.e.
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00104: Warning: element "html" is not declared in the DTD
Error at line 2
Please assist.
Regards,
Muhammad Naseer.
Edited by: m_naseer on Jan 21, 2011 2:47 AMthanks for reply,
following is the version
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
"CORE 10.2.0.4.0 Production"
TNS for Solaris: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
XML Error is
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Error Report</title>
<style>
td {font-family : Arial, Tahoma, Helvetica, sans-serif; font-size : 14px;}
A:link {color : #0059AA;}
A:visited {color : #999999;}
A:active {color : #999999;}
</style>
</head>
<body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" rightmargin="0">
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="left" height="75">
<tr bgcolor="#FFFFFF">
<td align="left" colspan="2" height="48"><font face="Arial, Verdana, Helvetica" size="4" color="#666666"><b> 404   Not Found</b></font></td>
</tr>
<tr bgcolor="#3F73A3">
<td height="23" width="84"><img width=1 height=1 border=0 alt=""></td>
<td height="23"><img width=1 height=1 border=0 alt=""></td>
<td align="right" height="23"><font face="Arial, Verdana, Helvetica" size="2" color="#FFFFFF"><b>SAP J2EE Engine/7.00 </b></font></td>
</tr>
<tr bgcolor="#9DCDFD">
<td height="4" colspan="3"><img width=1 height=1 border=0 alt=""></td>
</tr>
</table>
<br><br><br><br><br><br>
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="left" height="75">
<tr bgcolor="#FFFFFF">
<td align="left" colspan="2" height="48"><font face="Arial, Verdana, Helvetica" size="3" color="#000000"><b> The requested resource does not exist.</b></font></td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="left" valign="top" height="48"><font face="Arial, Verdana, Helvetica" size="2" color="#000000"><b> Details:</b></font></td>
<td align="left" valign="top" height="48"><font face="Arial, Verdana, Helvetica" size="3" color="#000000"><pre> Go to main page of this application!</pre></font></td>
</tr>
</body>
</html>
-31011
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00104: Warning: element "html" is not declared in the DTD
Error at line 2
Code is perfect is at was working but some thing may be bad has just happen that it is not working now.
Thanks in advance
Maybe you are looking for
-
Hi Experts, I am using SRM 7.0 with extended classic scenario and I have issue in the automatic po creation. For some Shopping Carts the PO is not automatically created. The SC is having Source of Supply Assigned and all the approves have completely
-
Resetting Cleared Intervals?
Basic problem. Testing methods of turning intervals on and off. I have an interval that works, and can be turned off, but the button to turn in back on is failing. Basically when this program is turned on, a bar rotates 5 degrees each second and a co
-
E-Recruiting: Exposure to External Candidates
Hi Experts, We're currently in the initial phase of implementing e-Recruiting 6.0 (Integrated scenario) at a telecom client on a global scale. Following is the doubt: Can we do away with exposing the client's e-Recruiting system to the external world
-
Creative Cloud desktop app won't download
I am trying to download creative cloud on new mac, and get an error message and told to contact customer support - any ideas?
-
Issues With Permissions With iTunes/iMac
Hey there - I hope someone out there can help me. I have all my media files (music, movies etc) on the MacHD. There are two profiles on the iMac...for myself and my partner. I have over 200 gigs of stuff that we both pull from. Lately, my partner is