Flex Webservice和Android

问题描述

| 尝试从移动应用程序访问Web服务时遇到问题。 当我在浏览器上尝试该Web服务的地址时,它可以工作;当我在Flash Builder的仿真器中尝试应用程序时,它可以工作。 但是当我在手机上尝试时,它不起作用! 我可以在我的应用程序中访问网络。 我只是在MXML视图中创建Web服务。
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<s:View xmlns:fx=\"http://ns.adobe.com/mxml/2009\" 
        xmlns:s=\"library://ns.adobe.com/flex/spark\" 
        title=\"WebService\">
    <fx:Declarations>
        <s:WebService id=\"webService\" wsdl=\"http://serverweb/Service.asmx?WSDL\">
    </s:WebService>
    </fx:Declarations>
</s:View>
我有这个例外
[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 (http://serverweb/Service.asmx?WSDL)\"]
at mx.rpc.wsdl::WSDLLoader/faultHandler()[E:\\dev\\hero_private_beta\\frameworks\\projects\\rpc\\src\\mx\\rpc\\wsdl\\WSDLLoader.as:103]
at flash.events::Eventdispatcher/dispatchEventFunction()
at flash.events::Eventdispatcher/dispatchEvent()
at HTTPOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[E:\\dev\\hero_private_beta\\frameworks\\projects\\rpc\\src\\mx\\rpc\\http\\HTTPService.as:993]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[E:\\dev\\hero_private_beta\\frameworks\\projects\\rpc\\src\\mx\\rpc\\AbstractInvoker.as:350]
at mx.rpc::Responder/fault()[E:\\dev\\hero_private_beta\\frameworks\\projects\\rpc\\src\\mx\\rpc\\Responder.as:68]
at mx.rpc::AsyncRequest/fault()[E:\\dev\\hero_private_beta\\frameworks\\projects\\rpc\\src\\mx\\rpc\\AsyncRequest.as:113]
at DirectHTTPMessageResponder/errorHandler()[E:\\dev\\hero_private_beta\\frameworks\\projects\\rpc\\src\\mx\\messaging\\channels\\DirectHTTPChannel.as:410]
at flash.events::Eventdispatcher/dispatchEventFunction()
at flash.events::Eventdispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()
有人能帮我吗? 谢谢     

解决方法

我已经找到并解决了我的问题。我使用本地Web服务器,电话无法将主机名转换为IP地址。因此,我将http://192.168.0.5/webservice.asmx?wsdl替换为http://serverweb/Service.asmx?WSDL(其中192.168.0.5是serverweb的IP)     ,您可能忘记了在清单中添加Internet权限。将此添加到您的app.xml中:
<android>
    <manifestAdditions>
    <![CDATA[
    <manifest>
        <uses-permission android:name=\"android.permission.INTERNET\"/>
    </manifest>
    ]]>
    </manifestAdditions>
</android>