2011-08-26 89 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,