2011-08-26 83 views
0

我有一個https .net webservice。使用像soap UI這樣的工具調用web方法可以正常工作。我無法從flex調用webmethod。我的WSDL在flex中加載得很好。從flex調用HTTPS webservice

部署時,我的Flex應用程序和web服務位於同一臺服務器上。當使用機器url和服務器內的訪問它工作正常,但不是當我使用Flex應用程序的https url。

例如 - http://machinename/flex/flexApp.html正常工作與https://publicname/wservice/ws.asmxhttps://publicname/flex/flexapp.html無法正常工作。

我擁有完整訪問權限的跨域策略,並且我在服務器上有一個有效的SSL證書。

當我做從我的本地機器在調試模式下我看到了呼叫Fiddler-

以下

的WSDL呼叫轉至罰款和返回正確的地方將WebMethod調用它後面的協議顯示爲HTTPS將協議顯示爲HTTP並返回錯誤 - 我一直堅持這一段時間。任何幫助是極大的讚賞。

謝謝, Nikhil。

這裏是我的Flex代碼調用它:

//business delegate 

public function BusinessDelegate(responder : IResponder):void 
    { 
     _responder = responder; 
     _service = ServiceLocator.getInstance().getService("sqlWebService"); 
     _service.loadWSDL(); 
    } 

    //Login User 
    public function Login(userId:String,password:String):void 
    { 
     var asyncToken:AsyncToken = _service.LoginUser(userId,password); 
     asyncToken.addResponder(_responder); 
    } 

和服務定位器有以下標籤,我設置的URL從外面通過https:// ....

<mx:WebService 
    id="sqlWebService" 
    useProxy="false" 
    concurrency="multiple" 
    showBusyCursor="true" 
    wsdl="{Url}"/> 
+0

您的Web服務和Flex應用程序從同一供應域?除此之外,我認爲你將不得不展示一些代碼,並描述你收到的錯誤。也許你的crossdomain.xml文件。也許是調用你的服務的Flex代碼。你確定你在Flex WebSrvice調用中指定了HTTPS嗎? – JeffryHouser

+0

您的最後一點..這是我覺得是錯誤的,當我看到在小提琴手WSDL得到調用顯示協議作爲HTTPS,當webmethod被調用它顯示協議爲HTTP似乎失敗並返回與502錯誤。我應該寫什麼代碼來確保呼叫以HTTPS而不是HTTP的形式出現? – Nikhil

+0

通常,您只需將HTTPS值指定爲WebService(或HTTPService)類的一部分即可。向我們顯示調用服務的代碼。 – JeffryHouser

回答

0

我終於能夠解決這個問題,通過替換我稱爲Flex WebService對象的代碼與Web服務的特定生成類。

我產生了使用進口的WebService(WSDL)web服務類和運行時間爲HTTPS被設置在主類的網址:// .....

,它就像一個魅力.. 。我看到在提琴手中它顯示我正確地以HTTPS而不是HTTP發送出去。

以下是幫助我 - http://livedocs.adobe.com/flex/3/html/help.html?content=security2_15.html 評論來自nated。

感謝Flextras.com將我指向正確的方向。 已解決。

0

如果使用Flex的WCF服務和WebService,使用 service.svc?WSDL HTTP和 service.svc/WSDL?WSDL爲HTTPS,