User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8b4) Gecko/20050801 Firefox/1.0+
Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8b4) Gecko/20050801 Firefox/1.0+
When i I create a WebServiceProxy object, I can only call methods that have no
underscore, which means that (let serviceproxy be a WebServiceProxy object, and
a adhoc wsdl file with two operations : foobar and foo_bar):
- calling serviceproxy.foobar() works
- calling serviceproxy.foo_bar() fails with an error (see above)
Steps to Reproduce:
1.Download the nsps.wsdl and wsdl.html files (attached with this bug report),
put them in /tmp
2.go to file:///tmp/wsdl.html
3.Enter a string in the Line Edit, press 'Send string value' button
Message Box is displayed : TypeError: proxy.user_search is not a function
Do the SOAP Call, and actually fail because the server is not responding...
Unless you have SOAP server in front, in this case it should just work.
Created attachment 191238 [details]
WSDL file for test case
Created attachment 191239 [details]
HTML file for test case
note that wsdl/soap is on its way out of the codebase, so this will be probably wontfixed.
This just came up in the mozilla.dev.tech.xml newsgroup. email@example.com pointed this out and noted that replacing the single underscores with '_005f' in his JS code fixes the problem. My reply to him (and his original quoted message) follows...
FWIW, This is working as designed. The issue is that arbitrary XML 'names' need to be mapped to legal JS 'identifiers' in and easily reversible way. I remember discussing this with Vidur at the time (he did most of this work). We agreed to do something *very* simple and just use a single underscore as an escape character. We were aware of the downside, but decided to do it this way anyway. This was 5+ years ago and this Soap support for mozilla was a very experimental project.
The code is in the two static methods:
WSPFactory::C2XML and WSPFactory::XML2C at http://lxr.mozilla.org/seamonkey/source/extensions/webservices/proxy/src/wspfactory.cpp#209
I can imagine other escaping strategies (e.g. a multi-character escape indicator). Of course, changing this now would break any code that *expects* the current behavior.
As to bug filing... If you go to the main bugzilla page (https://bugzilla.mozilla.org) and search for bugs with "wsdl" in the subject line you'll get a list of some of the bugs and feature requests related to this module. It appears that bugs are filed as: Product: Core, Component: Web Services.
> I'm trying to use the WebServiceProxyFactory to access a public web
> service at:
> I'm seeing some weird behavior, which is either a bug or I don't
> understand what's going on. The WSDL for this service defines a bunch
> of methods, among them: get_genes_by_organism.
> <operation name="get_genes_by_organism">
> <input message="typens:get_genes_by_organismRequest"/>
> <output message="typens:get_genes_by_organismResponse"/>
> The trouble is, the proxy generated by the factory ends up with names
> like this: get_005fgenes_005fby_005forganism.
> Suspiciously, 0x005f is unicode for the underscore character. Maybe the
> underscores are messing things up? Or maybe the WSDL is in an
> unexpected character encoding?
> It works if I call the methods with the munged up names, but it's not
> pretty. Anyone seen similar problems? Is there a good place to file a
> bug report?
We dropped SOAP.