You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@xml.apache.org by Jerry Hong <je...@digitalfoundry.com> on 2001/04/21 02:04:04 UTC
First Time.
Hi, I am new to soap.
My colleague created SOAP server on PC using MS-SOAP using ASP listner.
I am trying to access that server from UNIX using soap and xerces.
I need some guide to start. None of sample from soap on unix really helps.
Are there any example or guide?
Is there such thing as service manager on MS-SOAP?
Consider I am new. please go easy. Thanks.
Jerry
Re: First Time.
Posted by Scott Nichol <sn...@computer.org>.
Jerry,
Below is a copy of a message previously posted on this list by Ed Keen. Ed gives code
and instructions for building an MS SOAP server, MS SOAP client and Apache SOAP client.
I hope this is enough to get you started.
Scott Nichol
----- Original Message -----
From: "Jerry Hong" <je...@digitalfoundry.com>
To: <so...@xml.apache.org>
Sent: Friday, April 20, 2001 8:04 PM
Subject: First Time.
> Hi, I am new to soap.
> My colleague created SOAP server on PC using MS-SOAP using ASP listner.
> I am trying to access that server from UNIX using soap and xerces.
> I need some guide to start. None of sample from soap on unix really helps.
> Are there any example or guide?
> Is there such thing as service manager on MS-SOAP?
> Consider I am new. please go easy. Thanks.
>
>
> Jerry
>
Ed Keen's message:
Here is my code for a test Microsoft soap server program. First, you have
to follow these steps (I have taken these steps straight from Microsoft's
SOAP Toolkit 2.0 Beta 2 help file):
1. Open VB and create an ActiveX DLL project.
2. Change the Project Name to "SoapSample" (you must do this in 2 places
-- the actual name and in the "properties")
3. Add references to
* Microsoft XML, v3.0
* Microsoft SOAP Type Library (Ver 1.0)
* Microsoft Active Server Pages Object Library
4. Rename Class1 to "TestSoap" (you must do this in 2 places -- the
actual
name in in the "properties")
5. Add the code for TestSoap.cls (code listing below)
6. On the File menu, click Make SoapSample.dll
Now, you must create an Active Server Page to be the listener (you can also
write an ISAPI plugin, but I didn't want to taint myself too much with
Microsoft -- just wanted to prove the concept). Here are the steps for
that:
1. On the server running IIS, create a virtual root folder and name it
SoapSample.
2. In the folder referenced by the virtual folder, create a file, save the
following code to this file, and then save the file with the name,
SoapSample.asp.
<%
Set TestSoap = Server.CreateObject("SoapSample.TestSoap")
TestSoap .Process Request, Response
%>
Here is the code for TestSoap.cls:
------------------------------------
Option Explicit
Const NS_URI_SOAP_ENC = "http://schemas.xmlsoap.org/soap/encoding/"
Const TESTSOAP_NS = "urn:TestSoap"
Public Sub Process(ByVal Request As ASPTypeLibrary.Request, _
ByVal Response As ASPTypeLibrary.Response)
Dim A As Double
Dim B As Double
Dim RetVal As String
Dim Serializer As MSSOAPLib.SoapSerializer
Dim Reader As MSSOAPLib.SoapReader
Dim MethodName As String
Dim param As String
On Error Resume Next
Set Serializer = New MSSOAPLib.SoapSerializer
If Err Then
ServerFault Response, _
"Cannot create MSSOAP.SoapSerializer. " & _
Err.Description & "(0x" & Hex(Err.Number) & ")"
Exit Sub
End If
Set Reader = New MSSOAPLib.SoapReader
If Err Then
ServerFault Response, _
"Cannot create MSSOAP.SoapReader. " & _
Err.Description & "(0x" & Hex(Err.Number) & ")"
Exit Sub
End If
Reader.Load Request
If Err Then
ClientFault Response, "Cannot load request. " & Err.Description
Exit Sub
End If
MethodName = Reader.RPCStruct.baseName
If Err Then
ClientFault Response, _
"Cannot get method name. " & _
Err.Description
Exit Sub
End If
Select Case MethodName
Case "testMethod1"
RetVal = "testMethod1 was called"
Case "testMethod2"
param = Reader.RPCParameter("param").Text
If Err Then
ClientFault Response, "Cannot get parameter 'param'. " &
Err.Description
Exit Sub
End If
RetVal = "testMethod2 was called. You passed '" & param & "'"
Case Else
ClientFault Response, "Unknown method: '" & MethodName & "'."
Exit Sub
End Select
Response.ContentType = "text/xml"
Serializer.Init Response
Serializer.startEnvelope
Serializer.SoapAttribute "xmlns:xsi", ,
"http://www.w3.org/1999/XMLSchema-instance"
Serializer.SoapAttribute "xmlns:xsd", ,
"http://www.w3.org/1999/XMLSchema"
Serializer.startBody
Serializer.startElement MethodName & "Response", TESTSOAP_NS,
NS_URI_SOAP_ENC, "ns1"
Serializer.startElement "return", TESTSOAP_NS
Serializer.SoapAttribute "xsi:type", , "xsd:string"
Serializer.writeString RetVal
Serializer.endElement
Serializer.endElement
Serializer.endBody
Serializer.endEnvelope
End Sub
Sub ServerFault(ByVal Response As ASPTypeLibrary.Response, _
ByVal FaultString As String)
ReturnFault Response, "Server", FaultString
End Sub
Sub ClientFault(ByVal Response As ASPTypeLibrary.Response, _
ByVal FaultString As String)
ReturnFault Response, "Client", FaultString
End Sub
Sub ReturnFault(ByVal Response As ASPTypeLibrary.Response, _
ByVal FaultCode As String, _
ByVal FaultString As String)
On Error Resume Next
Err.Clear
Dim Serializer As MSSOAPLib.SoapSerializer
Response.Status = "500 Internal Server Error"
Set Serializer = New MSSOAPLib.SoapSerializer
If Err Then
Response.AppendToLog _
"Could not create SoapSerializer object. " & _
Err.Description
Else
Serializer.Init Response
Serializer.startEnvelope
Serializer.startBody
Serializer.startFault FaultCode, FaultString
Serializer.startFaultDetail
Serializer.endFaultDetail
Serializer.endFault
Serializer.endBody
Serializer.endEnvelope
End If
End Sub
------------------------------------
Here is the code for my Apache soap client class:
package tests.soap;
import java.io.*;
import java.util.*;
import java.net.*;
import org.w3c.dom.*;
import org.apache.soap.util.xml.*;
import org.apache.soap.*;
import org.apache.soap.encoding.*;
import org.apache.soap.encoding.soapenc.*;
import org.apache.soap.rpc.*;
public class SoapClient
{
public static void main(String[] args) throws Exception
{
URL url = new URL("http://localhost/SoapSample/SoapSample.asp");
Call call = new Call();
call.setTargetObjectURI("urn:TestSoap");
call.setMethodName("testMethod2");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
Vector params = new Vector();
params.addElement(new Parameter("param", String.class,
"foo foo", null));
call.setParams(params);
Response resp;
try
{
resp = call.invoke(url, "");
}
catch (SOAPException e)
{
System.err.println("Caught SOAPException (" +
e.getFaultCode() + "): " +
e.getMessage());
return;
}
// Check the response.
if (!resp.generatedFault())
{
Parameter ret = resp.getReturnValue();
Object value = ret.getValue();
if (value == null)
System.out.println("I don't know");
else
System.out.println("\n" + value);
}
else
{
Fault fault = resp.getFault();
System.err.println("Generated fault: ");
System.out.println (" Fault Code = " + fault.getFaultCode());
System.out.println (" Fault String = " + fault.getFaultString());
}
}