2014-09-22 6 views
1

Я получаю ошибку END_TAF при вызове в веб-службу WCF.android: почему я получаю ошибку END_TAG при выполнении функции, пока она является копией другой, которая работает?

Моя Stack ошибка:

09-22 22:43:30.711: W/System.err(3338): org.xmlpull.v1.XmlPullParserException: expected: END_TAG {http://schemas.xmlsoap.org/soap/envelope/}Body (position:END_TAG </{http://schemas.xmlsoap.org/soap/envelope/}s:Fault>@1:802 in [email protected]) 
09-22 22:43:30.711: W/System.err(3338):  at org.kxml2.io.KXmlParser.require(KXmlParser.java:2046) 
09-22 22:43:30.715: W/System.err(3338):  at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:138) 
09-22 22:43:30.715: W/System.err(3338):  at org.ksoap2.transport.Transport.parseResponse(Transport.java:63) 
09-22 22:43:30.715: W/System.err(3338):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100) 
09-22 22:43:30.715: W/System.err(3338):  at org.tempuri.IAndroid.userPasswordExists(IAndroid.java:304) 
09-22 22:43:30.715: W/System.err(3338):  at org.tempuri.IAndroid.getAllProductsAndOffers(IAndroid.java:50) 
09-22 22:43:30.715: W/System.err(3338):  at info.android.AllFragment.onCreateView(AllFragment.java:48) 
09-22 22:43:30.719: W/System.err(3338):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:829) 
09-22 22:43:30.719: W/System.err(3338):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035) 
09-22 22:43:30.719: W/System.err(3338):  at android.app.BackStackRecord.run(BackStackRecord.java:635) 
09-22 22:43:30.719: W/System.err(3338):  at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397) 
09-22 22:43:30.719: W/System.err(3338):  at android.app.Activity.performStart(Activity.java:5017) 
09-22 22:43:30.723: W/System.err(3338):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032) 
09-22 22:43:30.723: W/System.err(3338):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
09-22 22:43:30.723: W/System.err(3338):  at android.app.ActivityThread.access$600(ActivityThread.java:130) 
09-22 22:43:30.723: W/System.err(3338):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
09-22 22:43:30.723: W/System.err(3338):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-22 22:43:30.727: W/System.err(3338):  at android.os.Looper.loop(Looper.java:137) 
09-22 22:43:30.727: W/System.err(3338):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
09-22 22:43:30.727: W/System.err(3338):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-22 22:43:30.727: W/System.err(3338):  at java.lang.reflect.Method.invoke(Method.java:511) 
09-22 22:43:30.727: W/System.err(3338):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
09-22 22:43:30.727: W/System.err(3338):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
09-22 22:43:30.727: W/System.err(3338):  at dalvik.system.NativeStart.main(Native Method) 
09-22 22:43:30.727: W/System.err(3338): java.lang.NullPointerException 
09-22 22:43:30.731: W/System.err(3338):  at org.tempuri.IAndroid.getAllProductsAndOffers(IAndroid.java:50) 
09-22 22:43:30.731: W/System.err(3338):  at info.android.AllFragment.onCreateView(AllFragment.java:48) 
09-22 22:43:30.731: W/System.err(3338):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:829) 
09-22 22:43:30.735: W/System.err(3338):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035) 
09-22 22:43:30.735: W/System.err(3338):  at android.app.BackStackRecord.run(BackStackRecord.java:635) 
09-22 22:43:30.735: W/System.err(3338):  at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397) 
09-22 22:43:30.735: W/System.err(3338):  at android.app.Activity.performStart(Activity.java:5017) 
09-22 22:43:30.735: W/System.err(3338):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032) 
09-22 22:43:30.735: W/System.err(3338):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
09-22 22:43:30.735: W/System.err(3338):  at android.app.ActivityThread.access$600(ActivityThread.java:130) 
09-22 22:43:30.735: W/System.err(3338):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
09-22 22:43:30.739: W/System.err(3338):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-22 22:43:30.739: W/System.err(3338):  at android.os.Looper.loop(Looper.java:137) 
09-22 22:43:30.739: W/System.err(3338):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
09-22 22:43:30.739: W/System.err(3338):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-22 22:43:30.739: W/System.err(3338):  at java.lang.reflect.Method.invoke(Method.java:511) 
09-22 22:43:30.743: W/System.err(3338):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
09-22 22:43:30.743: W/System.err(3338):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
09-22 22:43:30.743: W/System.err(3338):  at dalvik.system.NativeStart.main(Native Method) 

Я вызываю функцию для проверки пользователя и пароль проверки. Процедура, которую я использую ksoap2. Код:

public static WcfResponse userPasswordExists (java.lang.String имя пользователя, java.lang.String pwd) { Строка METHOD_NAME = "userPasswordExists"; WcfResponse res = null;

try {   
    String SOAP_ACTION = Configuration.getWsSoapActionInit() + METHOD_NAME; 

    SoapObject _client = new SoapObject(Configuration.getWsNameSpace(), METHOD_NAME); 

    _client.addProperty("username", username); 
    _client.addProperty("pwd", (pwd.equals(""))? null: pwd); 


    SoapSerializationEnvelope _envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    _envelope.dotNet = true; 
    _envelope.bodyOut = _client; 


    AndroidHttpTransport _ht = new AndroidHttpTransport(Configuration.getWsUrl()); 
    _ht.debug = false; 

    _ht.call(SOAP_ACTION, _envelope); 

    SoapObject _ret = (SoapObject) _envelope.getResponse(); 


    res = SoapMapping.ToWcfResponse(_ret); 



} catch (Exception e) { 

    e.printStackTrace(); 
    res = null; 

} 

return res; 

}

Я проверил everythinbg и ИТИС право, во всяком случае, код он является копией AnotherOne которой он работает, я не знаю, почему это одна.

Мой интерфейс в ФОС:

public interface IAndroid 
    { 
     [OperationContract] 
     WcfResponse EnviarCorreo(string To, string Asunto, string Body); 

     [OperationContract] 
     WcfResponse UserPasswordExists(string username, string pwd); 

     [OperationContract] 
     WcfResponse UserExists(string username); 

     [OperationContract] 
     WcfResponsePOList getAllProductsAndOffers(string province_id, string city_id, string code, string favoritos, string tipo); 

     [OperationContract] 
     WcfResponsePO getProductByCodigo(string codigo); 

     [OperationContract] 
     WcfResponsePO getOfferByCodigo(string codigo); 

     [OperationContract] 
     WcfResponseOK BuyProductOrOffer(string codigo, string tipo, string ip); 

     [OperationContract] 
     WcfResponsePOList getProductsByOfferCode(string codigo); 

     [OperationContract] 
     WcfResponseOK SetFavouriteOff(string codigo, string tipo); 

     [OperationContract] 
     WcfResponseOK SetFavouriteOn(string codigo, string tipo, string ip); 

     [OperationContract] 
     WcfResponseByteArray ImageToByteArray(string file); 

     [OperationContract] 
     WcfResponseDictionary getAllProvincies(); 

     [OperationContract] 
     WcfResponseDictionary getAllCities(); 
    } 

И web.config является:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
    Note: As an alternative to hand editing this file you can use the 
    web admin tool to configure settings for your application. Use 
    the Website->Asp.Net Configuration option in Visual Studio. 
    A full list of settings and comments can be found in 
    machine.config.comments usually located in 
    \Windows\Microsoft.Net\Framework\v2.x\Config 
--> 
<configuration> 
    <appSettings> 
    <add key="connection" value="Server=localhost;Port=3306;Database=david;Uid=root;Pwd=root;" /> 
    <add key="uploads" value="C:\Users\DMR\Google Drive\DESARROLLO\PHP\android\contents\img\uploads\" /> 
    </appSettings> 

    <system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="basicHttpBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" closeTimeout="01:50:00" openTimeout="01:50:00" sendTimeout="01:50:00" receiveTimeout="01:50:00"> 
      <readerQuotas maxDepth="128" maxStringContentLength="8388608" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     </binding> 

     <binding name="BasicHttpBinding_IAndroid" maxBufferSize="2147483647" 
      maxReceivedMessageSize="2147483647" /> 

     </basicHttpBinding> 
    </bindings> 

    <client> 
     <endpoint address="http://localhost/Android/Android.svc" binding="basicHttpBinding" 
      bindingConfiguration="BasicHttpBinding_IAndroid" contract="IAndroid" 
      name="BasicHttpBinding_IAndroid" /> 
    </client> 

    <services>  
     <service behaviorConfiguration="ServiceBehavior" name="Android.Android"> 
     <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding" contract="Android.IAndroid" /> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service>  
    </services> 

    <behaviors> 
     <serviceBehaviors> 
     <behavior name="ServiceBehavior"> 
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
      <serviceMetadata httpGetEnabled="true" /> 
      <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
      <dataContractSerializer ignoreExtensionDataObject="false" maxItemsInObjectGraph="2147483646" /> 
     </behavior> 
     <behavior name=" MyClient"> 
      <dataContractSerializer ignoreExtensionDataObject="false" maxItemsInObjectGraph="2147483646" /> 
     </behavior> 
     </serviceBehaviors> 

    </behaviors> 
    </system.serviceModel> 
    <system.web> 
    <compilation debug="true" /> 
    </system.web> 
    <system.webServer> 
     <directoryBrowse enabled="false" /> 
    </system.webServer> 
</configuration> 

Что такое проблема- в коде? вам нужно что-то еще?

может быть, мне нужно другие глаза, чтобы помочь мне

ответ

0

Может быть, мне нужно поставить содержание констант, я решил эту ошибку, ооочень глупую в WCF У меня был, как функция декларации UserPasswordExists и userPasswordExists вызова ksoap

grrrrrrr

+0

У меня такая же проблема, но я не знаю, где ошибка, вы можете мне помочь? – aircraft