Hi All,
I would like to thank all who tried to help, i was finally able to
solve the problem by:
1. Install all 3 FlexBuilder hotfixes.
2. Add the following http headers:
 header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
 header('Pragma: private');
 In two places:
 a. In a php script which returns the WSDL file (see code below).
 b. In the service method which handles the WS calls, i was using PHP
as server side language and the headers should be set right before we
return the result object (inside the class which handles the WS
method) and not in the service PHP script which creates the PHP
SoapServer object.

Thanks,
Eyal






--- In flexcoders@yahoogroups.com, "Seth Hodgson" <[EMAIL PROTECTED]> wrote:
>
> Hi Eyal,
> 
> My direct experience is limited to working with POSTs from IE over
HTTPS. POSTs are not idempotent and are not cacheable according to the
HTTP spec. 
> See section 9.5: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
> 
> <snip>
> Responses to this method are not cacheable, unless the response
includes appropriate Cache-Control or Expires header fields.
> </snip>
> 
> So one workaround for the IE issue is to always issue POSTs from the
player and not set any cache-related response headers at all. Note
that the player converts POSTs with an empty body to GETs
automatically (which is probably due to bugs in the underlying ActiveX
or Netscape Plugin APIs).
> 
> For GETs, I've seen various posts online by people who claim to have
found header combinations to get IE HTTPS with no caching working but
I can't verify any of these for you based on my personal experience.
> 
> Good luck,
> Seth
> 
> ________________________________________
> From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED]
On Behalf Of eyal_c
> Sent: Wednesday, January 23, 2008 7:50 AM
> To: flexcoders@yahoogroups.com
> Subject: [flexcoders] Re: Failure to access a WSDL file from Flex's
WebService class over HTTPS on IE
> 
> Hi,
> 
> I am not sure i understood your reply, as i wrote, I also tried
> replacing the WSDL file with the following php script that handles the
> cache problem (after reading a post on the subject) 
> 
> <?php
> 
> $browser= (ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['USER_AGENT'])) ?
> "IE" : "FF";
> ob_end_clean();
> if ($browser == "IE")
> {
> header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
> header('Pragma: private');
> }
> else
> {
> header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
> header("Pragma: no-cache");
> header("Expires: " . gmdate("D, d M Y H:i:s") . " GMT");
> }
> 
> readfile(dirname(__FILE__) . '/MyService.wsdl');
> 
> ?>
> 
> This didn't solve the problem... is this what you suggested?
> 
> Thanks,
> Eyal
> 
> --- In flexcoders@yahoogroups.com, "Seth Hodgson" <shodgson@> wrote:
> >
> > This is due to a long-standing IE bug with HTTPS and cache-related
> response headers.
> > 
> > If you're not routing your web service invocations through the LCDS
> or BlazeDS proxy service, you'll need to tweak your application server
> to tweak the response headers related to caching if the user agent
> making the request is IE and the request arrives over HTTPS.
> > 
> > Various folks have tried different header settings and combinations
> to work around this. Google for their recommendations.
> > 
> > Seth
> > 
> > ________________________________________
> > From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED]
> On Behalf Of eyal_c
> > Sent: Wednesday, January 16, 2008 10:52 PM
> > To: flexcoders@yahoogroups.com
> > Subject: [flexcoders] Failure to access a WSDL file from Flex's
> WebService class over HTTPS on IE
> > 
> > Hello,
> > 
> > I have a problem to access a WSDL file from Flex's WebService class
> > over HTTPS on IE.
> > 
> > I have tried using Flex Builder 2 / 3 but the problem is the same. 
> > The web-server I am using is appWeb.
> > Note that the same code works ok when I run it over HTTP (both IE and
> > FF), and also over HTTPS but only from FireFox.
> > The only problem is running it from IE over HTTPS.
> > 
> > Analyzing the tcpdump I have compared the attempt to fetch the SWDL
> > file from the flex code to a similar request done from the IE
> > web-browser by typing the WSDL address in the URL field (This works ok
> > and the browser displays the WSDL file). It seems that after the
> > initial handshake the TCP connection is closed and the flex code
> > doesn't open a new connection (like the IE does in the direct
attempt).
> > 
> > I am using the following lines of code in Flex:
> > 
> > var webService:WebService = new WebService();
> > webService.showBusyCursor = true;
> > webService.useProxy = false;
> > webService.wsdl = "https://<IP_ADDRESS>/MyService.wsdl";
> > webService.endpointURI =
> > "https://<IP_ADDRESS>/SoapServer.php?serviceName=MyService";
> > webService.addEventListener(LoadEvent.LOAD, handleLoad);
> > webService.useProxy = false;
> > 
> > I have received the following error: 
> > 
> > [SWF] C:\f2rca\_workspace\List\bin\List-debug.swf - 1,187,356 bytes
> > after decompression
> > 'DDDB2F4F-F7C5-676C-DDC6-819D636D5140' producer set destination to
> > 'DefaultHTTP'.
> > warning: unable to bind to property 'callType' on class 'Object'
> > (class is not an IEventDispatcher)
> > warning: unable to bind to property 'callType' on class 'Object'
> > (class is not an IEventDispatcher)
> > warning: unable to bind to property 'callType' on class 'Object'
> > (class is not an IEventDispatcher)
> > warning: unable to bind to property 'callType' on class 'Object'
> > (class is not an IEventDispatcher)
> > Initializing WebService:
> > https://135.64.100.135/SoapServer.php?serviceName=MyService, debug is:
> > true
> > Registering schema namespace: http://www.w3.org/1999/XMLSchema
> > Registering schema namespace: http://www.w3.org/2000/10/XMLSchema
> > Registering schema namespace: http://www.w3.org/2001/XMLSchema
> > Registering schema namespace:
http://schemas.xmlsoap.org/soap/encoding/
> > Registering schema namespace: http://xml.apache.org/xml-soap
> > Registering schema namespace: http://rpc.xml.coldfusion
> > '971164BA-D5DE-788B-5557-819D668A052A' producer set destination to
> > 'DefaultHTTP'.
> > '971164BA-D5DE-788B-5557-819D668A052A' producer set destination to
> > 'DefaultHTTPS'.
> > '3F645199-B68B-75BC-66C6-819D669A66F1' producer set destination to
> > 'DefaultHTTP'.
> > 'direct_http_channel' channel endpoint set to http:
> > Creating WSDL object for https://135.64.100.135/MyService.wsdl
> > 'C556A8DB-47F4-E47F-5B0F-819D66A92E33' producer set destination to
> > 'DefaultHTTP'.
> > Loading document https://135.64.100.135/MyService.wsdl for destination
> > 'DefaultHTTPS'
> > '971164BA-D5DE-788B-5557-819D668A052A' producer sending message
> > 'AB4382D2-D12F-A510-D1FE-819D66A9E2DB'
> > 'direct_http_channel' channel sending message:
> > (mx.messaging.messages::HTTPRequestMessage)#0
> > body = (Object)#1
> > clientId = (null)
> > contentType = "application/x-www-form-urlencoded"
> > destination = "DefaultHTTPS"
> > headers = (Object)#2
> > httpHeaders = (Object)#3
> > messageId = "AB4382D2-D12F-A510-D1FE-819D66A9E2DB"
> > method = "GET"
> > recordHeaders = false
> > timestamp = 0
> > timeToLive = 0
> > url = "https://135.64.100.135/MyService.wsdl";
> > '971164BA-D5DE-788B-5557-819D668A052A' producer connected.
> > '971164BA-D5DE-788B-5557-819D668A052A' producer acknowledge of
> > 'AB4382D2-D12F-A510-D1FE-819D66A9E2DB'.
> > '971164BA-D5DE-788B-5557-819D668A052A' producer fault for
> > 'AB4382D2-D12F-A510-D1FE-819D66A9E2DB'.
> > [RPC Fault faultString="HTTP request error"
> > faultCode="Server.Error.Request" faultDetail="Unable to load WSDL. If
> > currently online, please verify the URI and/or format of the WSDL
> > (https://135.64.100.135/MyService.wsdl)"]
> > at
> >
>
mx.rpc.soap::WSDLParser/mx.rpc.soap:WSDLParser::dispatchFault()[C:\dev\enterprise_bali\frameworks;mx\rpc\soap;WSDLParser.as:209]
> > at
> >
>
mx.rpc.soap::WSDLParser/http://www.adobe.com/2006/flex/mx/internal::httpFaultHandler()[C:\dev\enterprise_bali\frameworks;mx\rpc\soap;WSDLParser.as:203]
> > at
> >
>
flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
> > at flash.events::EventDispatcher/dispatchEvent()
> > at
> >
>
mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[C:\dev\enterprise_bali\frameworks;mx\rpc;AbstractInvoker.as:146]
> > at
> >
>
mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[C:\dev\enterprise_bali\frameworks;mx\rpc;AbstractInvoker.as:195]
> > at
> >
>
mx.rpc::Responder/fault()[C:\dev\enterprise_bali\frameworks;mx\rpc;Responder.as:56]
> > at
> >
>
mx.rpc::AsyncRequest/fault()[C:\dev\enterprise_bali\frameworks;mx\rpc;AsyncRequest.as:107]
> > at
> >
>
DirectHTTPChannel.as$139::DirectHTTPMessageResponder/errorHandler()[C:\dev\enterprise_bali\frameworks;mx\messaging\channels;DirectHTTPChannel.as:323]
> > at
> >
>
flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
> > at flash.events::EventDispatcher/dispatchEvent()
> > at flash.net::URLLoader/flash.net:URLLoader::redirectEvent()
> > at [io]
> > 
> > I also tried replacing the WSDL file with the following php script
> > (after reading a post on the subject) but it didn't solve the problem:
> > <?php
> > 
> > $browser= (ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['USER_AGENT'])) ?
> > "IE" : "FF";
> > ob_end_clean();
> > if ($browser == "IE")
> > {
> > header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
> > header('Pragma: private');
> > }
> > else
> > {
> > header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
> > header("Pragma: no-cache");
> > header("Expires: " . gmdate("D, d M Y H:i:s") . " GMT");
> > }
> > 
> > readfile(dirname(__FILE__) . '/MyService.wsdl');
> > 
> > ?>
> >
>


Reply via email to