Server Error: (405) Method Not Allowed when connecting to WOFpy server

Dec 6, 2012 at 1:39 AM
Edited Dec 6, 2012 at 1:45 AM

I am trying to use HydroDesktop to connect to a WOFpy server.  My WOFpy server seems to be working well.. I can connect to it, and perform waterML requests such as GetSites, GetVariableInfo, etc... with a web browser, no problem.  

When I try to use Hydro Desktop to connect directly to the server (using the Unpublished Web Services 1.4 tutorial), no go.  I DO see the following in my python window running WOFpy:

INFO:werkzeug:192.168.1.5 - - [05/Dec/2012 21:15:25] "POST / HTTP/1.1" 405 -

So, HydroDesktop is indeed connecting to the service, but it is trying to perform a POST command.  I never see a POST command when I am accessing WOFpy from a web browser... only GET commands.  WOFpy is responding with a 405 error.

Why is HydroDesktop trying to issue a POST command?

Thank you for any help!

I am using the latest HydroDesktop release (1.4.11.1)

and the most recent WOFpy release (0.1.1)

Justin

- Stroud Water Research Center

Coordinator
Dec 6, 2012 at 10:51 AM

Hi,

Due to backward-compatibility reasons HydroDesktop uses the SOAP ("simple object access protocol") to connect to the GetSites, GetSiteInfo and GetValues web methods. At the time when HydroDesktop was designed all known WaterOneFlow services were SOAP-based. In SOAP the only way to retrieve data from the web service is issuing a POST command.

Example of a WaterML web service that is accessed by POST is:

When doing the POST, HydroDesktop sends a <SOAP:ENVELOPE> element in the request body. This "soap envelope" contains the parameters such as SiteCode, BeginTime or EndTime.

 

As more and more WaterML services (including WofPy) use GET as the primary data retrieval method, I think HydroDesktop should be modified to use GET. However, it still must use POST for legacy WaterML services such as "USGS" or "EPA".

To help examining this issue: Could you send a sample URL for GetSites and GetSiteInfo from your WofPy server?

Dec 6, 2012 at 12:27 PM

Thanks for the reply,

I opened-up a port to my WOFpy server today:

Access 'REST' endpoints at http://173.62.194.113:8080/

( Example: http://173.62.194.113:8080/GetSites )

Access SOAP WSDL at http://173.62.194.113:8080/soap/wateroneflow.wsdl

WOFpy supports both SOAP and REST.  I have tried both in the URL field when adding a service to HydroDesktop.  But for both, when I 'Download Metadata' in the Metadata Fetcher window I get the error: "The remote server returned an error: (405) Method Not Allowed."

And, in my WOFpy window, I see:

INFO:werkzeug:192.168.1.5 - - [06/Dec/2012 08:20:43] "POST /soap/wateroneflow.wsdl HTTP/1.1" 405 -

Thanks again for any help,

Justin

Stroud Water Research Center

Dec 6, 2012 at 5:15 PM

I just figured this one out...

The correct WOFpy URL for the SOAP methods is:

/soap/wateroneflow

not '/soap' or just '/' or '/soap/wateroneflow.wsdl'

So SOAP services for my server would be http://173.62.194.113:8080/soap/wateroneflow 

I am now able to get hydro desktop to connect and download my data.

Thanks,

Justin

Stroud Water Research Center