axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Buster, Duke (NM75)" <Duke.Bus...@honeywell.com>
Subject RE: Question on "Soap method is not allowed to invoke"
Date Wed, 17 Nov 2004 23:57:49 GMT
> Axis C++ uses "SOAPAction" HTTP header to locate 
> the method being invoked.
> By default Axis Java does not set this. 

Thanks!  Having the Java client set the SOAPAction solved the problem.

> BTW: Did you use Axis Java client from the same host? 

No.  My test client was C++ built from the wsdl.

> Even if you get the "method not allowed" problem fixed, 
> in case you are using a RPC style C++ service, you would 
> not be able to interoperate with a Java client because 
> the SOAP stream sent by the server is incorrect. 

I am using an RPC style service, and it did work with a Java client.  I
compared the XML from the Java client and the C++ test client.  There are
some differences:
  - Java client does not include the line:  <?xml version='1.0'
encoding='utf-8' ?>
  - Java client uses the keyword 'soapenv' versus 'soap-env' in the C++.
Apparently, the differences were not significant.

In case someone cares, here is the XML from the two clients.

>From Java client
----------------
POST /axis/C4iToVirtualServer HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.2beta
Host: 127.0.0.1:80
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: "C4iToVirtualServer#processFreeTextMessage"
Content-Length: 482
<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>
    <junk that I took out to keep this shorter>
  </soapenv:Body>
</soapenv:Envelope>

>From C++ test client
--------------------
POST /axis/C4iToVirtualServer HTTP/1.1
Host: 127.0.0.1:80
Content-Type: text/xml; charset=UTF-8
SOAPAction: "C4iToVirtualServer#sendFreeTextMessage"
Content-Length: 527
<?xml version='1.0' encoding='utf-8' ?>
<SOAP-ENV:Envelope 
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Body>
    <junk that I took out to keep this shorter>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


-Duke

-----Original Message-----
From: Samisa Abeysinghe [mailto:samisa_abeysinghe@yahoo.com]
Sent: Monday, November 15, 2004 6:27 PM
To: Apache AXIS C User List
Subject: Re: Question on "Soap method is not allowed to invoke"


Axis C++ uses "SOAPAction" HTTP header to locate the method being invoked.
By default Axis Java does not set this. This must be the reason that you are
getting "Requested
method is not allowed" (Yes, it should have said "SOAPAction missing" or
something like that)

BTW: Did you use Axis Java client from the same host? 

Also: Even if you get the "method not allowed" problem fixed, in case you
are using a RPC style
C++ service, you would not be able to interoperate with a Java client
because the SOAP stream sent
by the server is incorrect. Additionally, if your Java client sends
href/multiref tags, again the
server will fail to deserialize SOAP. I have not tested doclit services with
C++ server and Java
client.

Thanks,
Samisa...


--- "Buster, Duke (NM75)" <Duke.Buster@honeywell.com> wrote:

> Howdy,
> 
> I am making my first attempt at a SOAP service using Axis C++ v1.3, and I
am
> running into the following error:  "Soap method is not allowed to invoke"
> (with the extra goodie of "AxisWsddException:Requested method is not
> allowed").
> 
> Here is the relevant excerpt from the server.wsdd:
> <service name="C4iToVirtualServer" provider="CPP:RPC" description="yada
> yada">
>     <parameter name="className" value="C:\Program
> Files\apache\Apache2\Axis\webservices\C4iToVirtualServer_dbg.dll"/>
>     <parameter name="allowedMethods" value="initVirtualLink
> sendFreeTextMessage sendMTO sendSplash "/>
> </service>
> 
> Some notes and symptoms:
> - The methods DO work when I use a test client on the same host and post
the
> requests to http://localhost/axis/C4iToVirtualServer ...
> - The methods DON'T work when I use an Axis Java client on another host.
I
> get the "not allowed" error message.
> - I thought about fiddling with "Directory" and "Limit" directives in the
> Apache2 httpd.conf.  However, I'm not sure what I'm doing, and the
> AxisWsddException implies that Axis is rejecting the request, not the HTTP
> server.
> 
> Any suggestions?
> 
> 
> Thanks!
> 
> -Duke
> 
> Duke Buster
> Honeywell
> duke.buster@honeywell.com
> 
> 
> 



		
__________________________________ 
Do you Yahoo!? 
The all-new My Yahoo! - Get yours free! 
http://my.yahoo.com 
 

Mime
View raw message