我有一个https .netwebservice。使用soap UI之类的工具调用web方法工作正常。我无法从flex调用webmethod。我的WSDL在flex中加载正常。
在部署时,我的Flex应用程序和WebService位于同一台服务器上。当使用机器URL并从服务器内部访问时,它工作正常,但当我为Flex应用程序使用https URL时就不行了。
例如-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}"/>
2条答案
按热度按时间nhjlsmyf1#
最后,我用为Web服务生成的特定类替换了调用FlexWebService对象的代码,从而解决了这个问题。
我使用Import WebService(WSDL)为Web服务生成了类,并在运行时将主类上的url设置为https://.....
而且它的工作原理就像一个魅力...我看到在Fiddler中,它显示我正确地作为HTTPS而不是HTTP出去。
这里是什么帮助了我-http://livedocs.adobe.com/flex/3/html/help.html?content=security2_15.html评论由nated。
感谢Flextras.com为我指出正确的方向。
db2dz4w82#
如果在Flex中使用WCF服务和WebService,请对HTTP使用service.svc?wsdl,对HTTPS使用service.svc/wsdl?wsdl。