我有一个https .net网络服务。使用soap UI等工具调用Web方法可以正常工作。我无法从flex调用web方法。我的WSDL在flex中加载很好。
在部署时,我的flex应用程序和webservice位于同一台服务器上。当使用机器URL并从服务器内部进行访问时,它可以正常工作,但是当我使用https url进行flex应用程序时则不行。
例如 - http://machinename/flex/flexApp.html适用于https://publicname/wservice/ws.asmx,但https://publicname/flex/flexapp.html无法正常工作。
我有完全访问权限的跨域策略,并且我在服务器上有一个有效的SSL证书。
当我在本地计算机上以调试模式进行调用时,我在Fiddler中看到以下内容 -
WSDL调用正常并且正确返回并且协议显示为HTTPS,其中随后的webmethod调用将协议显示为HTTP并返回错误 - 我已经坚持了很长一段时间。非常感谢任何帮助。
谢谢, 尼基尔。
以下是我的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 :(得分:0)
我终于能够通过将我调用Flex WebService对象的代码替换为Web服务的特定生成类来解决此问题。
我使用Import WebService(WSDL)为webservice生成了类,并在运行时将主类的url设置为https:// .....
它就像一个魅力......而且我看到它在小提琴手中显示我正确地以HTTPS而不是HTTP出现。
这对我有帮助 - http://livedocs.adobe.com/flex/3/html/help.html?content=security2_15.html 评论由nated。
感谢Flextras.com指出我正确的方向。 解决。
答案 1 :(得分:0)
如果在Flex中使用WCF服务和WebService,请使用 service.svc?wsdl用于HTTP和 service.svc / wsdl?wsdl for HTTPS,