Гибкий веб-сервис и Android

#apache-flex #web-services #flex4 #air #mxml

#apache-гибкий #веб-сервисы #flex4 #air #mxml

Вопрос:

У меня возникает проблема, когда я пытаюсь получить доступ к веб-сервису из мобильного приложения. Когда я пытаюсь ввести адрес веб-сервиса в своем браузере, это работает, когда я пытаюсь в своем приложении на эмуляторе Flash Builder, это работает. Но когда я пробую это на своем телефоне, это не работает!

У меня есть доступ к Интернету в моем приложении.

Я просто создаю веб-сервис в представлении на MXML.

 <?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:devhero_private_betaframeworksprojectsrpcsrcmxrpcwsdlWSDLLoader.as:103]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at HTTPOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[E:devhero_private_betaframeworksprojectsrpcsrcmxrpchttpHTTPService.as:993]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[E:devhero_private_betaframeworksprojectsrpcsrcmxrpcAbstractInvoker.as:350]
at mx.rpc::Responder/fault()[E:devhero_private_betaframeworksprojectsrpcsrcmxrpcResponder.as:68]
at mx.rpc::AsyncRequest/fault()[E:devhero_private_betaframeworksprojectsrpcsrcmxrpcAsyncRequest.as:113]
at DirectHTTPMessageResponder/errorHandler()[E:devhero_private_betaframeworksprojectsrpcsrcmxmessagingchannelsDirectHTTPChannel.as:410]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()
  

Кто-нибудь может мне помочь?

Спасибо

Ответ №1:

Я нашел и исправил свою проблему. Я использую локальный веб-сервер, и телефон не преобразует имя хоста в IP-адрес. Поэтому вместо http://serverweb/Service.asmx?WSDL , Я поставил http://192.168.0.5/webservice.asmx?wsdl (где 192.168.0.5 — это IP-адрес веб-сервера)

Ответ №2:

Вероятно, вы забыли добавить разрешение доступа в Интернет в манифест. Добавьте это в свой app.xml:

 <android>
    <manifestAdditions>
    <![CDATA[
    <manifest>
        <uses-permission android:name="android.permission.INTERNET"/>
    </manifest>
    ]]>
    </manifestAdditions>
</android>
  

Комментарии:

1. Нет, я не забыл, это здесь. У меня есть доступ к другому веб-сервису без проблем. Должно быть, это ошибка с моим веб-сервисом. У меня есть запись в crossdomain.xml <разрешить доступ из домена =»*» /> В чем еще может быть проблема?

2. правильно ли отображается ваш WSDL? Можете ли вы опубликовать это?