Hello all,

I'm new to this list so if my question is anwered elsewhere and I didn't
find it in the archive, my apologies.

I have to make some simple calls to a webservice hosted on an IIS
server. A valid "Login" call should look like this, according to the
spec:

POST /webservices/ExternalRedirectionService.asmx HTTP/1.1
Host: gww-ob.nl
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://[someurl.tld]/WebServices/Login";

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
  <soap:Body>
    <Login xmlns="http://[someurl.tld]/WebServices/";>
      <username>string</username>
      <password>string</password>
    </Login>
  </soap:Body>
</soap:Envelope>

I wrote this code after studying the tutorial (the localhost:8888 is for
tcpmon, which forwards to the actual server on port 80):

   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import javax.xml.namespace.QName;
   
   public class TestClient {
      public static void main(String [] args) {
          try {
              String endpoint =
                       
"http://localhost:8888/webservices/ExternalRedirectionService.asmx";;
  
             Service  service = new Service();
             Call     call    = (Call) service.createCall();
             call.setTargetEndpointAddress( new java.net.URL(endpoint) );
             call.setSOAPActionURI("http://[myurl.tld]/WebServices/Login";);

             call.addParameter("username", 
org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
             call.addParameter("password", 
org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
             
             call.setReturnType(org.apache.axis.Constants.XSD_STRING);
              
             String ret = (String) call.invoke(new 
QName("http://[myurl.tld]/WebServices/";, "Login"), new Object[] { "[username]", 
"[password]" } );
  
             System.out.println("Got '" + ret + "'");
         } catch (Exception e) {
             System.err.println(e.toString());
         }
    }
  }

This yields the following call:

POST /webservices/ExternalRedirectionService.asmx HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.2alpha
Host: [someurl.tld]:8888
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: "http://www.[someurl.tld]/WebServices/Login";
Content-Length: 520

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
 <soapenv:Body>
  <ns1:Login soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:ns1="http://www.[someurl.tld]/WebServices/";>
   <username xsi:type="xsd:string">[username]</username>
   <password xsi:type="xsd:string">[password]</password>
  </ns1:Login>
 </soapenv:Body>
</soapenv:Envelope>

(I know I'm using an old version of Axis, that's a constraint I have to work 
with.)

The webserver then replies with:

System.Web.Services.Protocols.SoapException: Server was unable to process 
request. ---> Csla.DataPortalException: DataPortal.Fetch failed ---> 
Csla.Server.CallMethodException: DataPortal_Fetch method call failed ---> 
System.Data.SqlClient.SqlException: Procedure 'security_login' expects 
parameter '@st_username', which was not supplied.

followed by a long stack trace.

My question is, naturally: what am I doing wrong here?

Thanks for any insights.

regards,

-- 
Reinout van Schouwen
http://vanschouwen.info/


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to