Here is link to nice java soap client
I've implement also LS2J approach
here is my example. There are some enhancements need to do, but anywhere this also works fine.
Java library
import java.io.*;
import java.net.*;
public class ECWebservice {
String cResponse;
String wsurl;
String msg;
String contentType;
public ECWebservice(String init_url) throws IOException {
wsurl = init_url;
msg = "";
contentType = "text/xml; charset=utf-8";
cResponse = "";
}
public String GetResponce() {
return cResponse;
}
public void SetContentType(String init_contenttype) {
contentType = init_contenttype;
}
public boolean Send(String init_msg) {
boolean result = true;
try {
msg = init_msg;
// Create the connection where we're going to send the file.
URL url = new URL(wsurl);
URLConnection connection = url.openConnection();
HttpURLConnection httpConn = (HttpURLConnection) connection;
String SOAPAction = msg;
byte[] b = SOAPAction.getBytes();
// Set the appropriate HTTP parameters.
httpConn.setRequestProperty( "Content-Length", String.valueOf(SOAPAction.length()));
httpConn.setRequestProperty("Content-Type", contentType);
httpConn.setRequestProperty("SOAPAction", SOAPAction);
httpConn.setRequestMethod("POST");
httpConn.setDoOutput(true);
httpConn.setDoInput(true);
// Everything's set up; send the XML that was read in to b.
OutputStream out = httpConn.getOutputStream();
out.write(b);
out.close();
// Read the response and write it to standard out.
InputStreamReader isr = new InputStreamReader(httpConn.getInputStream(), "utf-8");
BufferedReader in = new BufferedReader(isr);
String inputLine;
while ((inputLine = in.readLine()) != null) {
cResponse += inputLine;
}
in.close();
} catch(Exception e) {
e.printStackTrace();
cResponse = "Main: Exception occured - check Java Debug Console";
result = false;
}
return result;
}
}
LS2J library
Option Public
Option Declare
Use "webservice.core"
UseLSX "*javacon"
Class ECWebservice
responce As string
connection As string
contentType As string
Sub New(connection_url As string)
connection = connection_url
contentType = "text/xml; charset=utf-8"
End Sub
Public Property Get GetResponce As string
GetResponce = responce
End Property
public Property Set SetConnection
connection = SetConnection
End Property
Public Property Set SetContentType
contentType = SetContentType
End Property
Function SendXMLRequest(xmldata) As Boolean
On Error Goto errorproc
'** everything we'll need to access our Java classes
Dim jSession As New JavaSession
Dim jClass As JavaClass
Dim jObject As JavaObject
'** get the IGWebservice class and instantiate an instance of it
Set jClass = jSession.GetClass("ECWebservice")
'** version of CreateObject and init with path to WSDL)
Set jObject = jClass.CreateObject("(Ljava/lang/String;)V", connection)
jObject.SetContentType(contentType)
'** send message and get result: true/false, if true then we got result
If jObject.send(xmldata) Then
me.responce = jObject.GetResponce()
End If
SendXMLRequest = True
endofsub:
Exit Function
errorproc:
MsgBox "Error #" & Err & " on line " & Erl & " in function " & Lsi_info(2) & " : " & Error, 48, "Runtime error"
Resume endofsub
End Function
End Class
2 comments :
Will you share the LS2J version
I've updated main post. you can take it if you need.
Post a Comment