ColdFusion Talk (CF-Talk)
Web Services choke on HTTP Compression?
When I try to call a web service from one of our business partners, I get the error: java.util.zip.ZipException: unknown compression method. This seems to have something to do with HTTP Compression on the partner's server. I've seen a work-around for CFHTTP (passing additional HTTP headers), but I haven't been able to track down a solution for web service calls.Michael Schreiber
12/11/06 05:01 P
12/11/06 07:02 P
12/12/06 12:15 P
Author: Michael Schreiber
12/11/2006 05:01 PM
When I try to call a web service from one of our business partners, I get the error: java.util.zip.ZipException: unknown compression method. This seems to have something to do with HTTP Compression on the partner's server. I've seen a work-around for CFHTTP (passing additional HTTP headers), but I haven't been able to track down a solution for web service calls. Has anyone had this problem before? Any resolutions floating around out there? Background: I'm trying to consume a webservice that I had previously used just fine (via HTTP), but has recently moved to a new server (using HTTPS). I can bring up the WSDL just fine using my browser. When I try to register the webservice through CF Administrator, I get the error: Error creating web service. Please ensure that you have entered a correct Web Service name or URL. If I try and call the webservice from my CF code, the full error message I get is: Name: https://www.travelinsured.com/TIWebServiceQA/service.asmx?wsdl. WSDL: https://www.travelinsured.com/TIWebServiceQA/service.asmx?wsdl. java.util.zip.ZipException: unknown compression method It is recommended that you use a web browser to retrieve and examine the requested WSDL document for correctness. If the requested WSDL document can't be retrieved or it is dynamically generated, it is likely that the target web service has programming errors. Any help would be greatly appreciated! Thanks!
Author: Steven Erat
12/11/2006 07:02 PM
See if you can get the WSDL via CFHTTP first. If the remote webserver is compression the server response containing the wsdl, then perhaps this will help with the CFHTTP call: http://www.talkingtree.com/blog/index.cfm/2004/7/28/20040729 Then, if successful, save the WSDL locally. Since the WSDL contains a ServicePort property near the bottom of the file you will be able to put the local web URI of the wsdl into the CFINVOKE tag, and the ServicePort will be used to run the web service. The WSDL is only used to create a local stub for ColdFusion. It doesn't matter where the WSDL is, so long as the ServicePort reference the actual location of the working web service. The local stub has all the right methods invocations and it has the right webservice location from the ServicePort. In psuedo code: [cfhttp url="http://www.remoteserver.com/dosomething.wsdl"] [cffile file="C:\inetpub\wwwroot\remoteServer_doSomething.wsdl" output="#cfhttp.filecontent#"] [cfinvoke webservice="http://localhost/remoteServer_doSomething.wsdl" method="foo" result="actualWebServiceResult"] How's that? -Steven Erat ----- Excess quoted text cut - see Original Post for more ----- . WSDL: > https://www.travelinsured.com/TIWebServiceQA/service.asmx?wsdl ----- Excess quoted text cut - see Original Post for more -----
Author: Michael Schreiber
12/12/2006 12:15 PM
Thanks, Steven! That is brilliant. I guess I knew that ColdFusion just used the WSDL to generate the stub objects, but I didn't know about the server port element tying it to the actual webservice server. Saving the WSDL to my local machine works like a charm. The only weirdness is that our business partner swears that they don't use HTTP compression on the server. Maybe its just an incompatibility with ColdFusion, Web Services and SSL. Thanks Agan!
May 26, 2013
Latest Fusion Authority Articles