kSoap2 выбрасывая http 404 не найдена ошибка на transport.call(url)

Я работаю над вызовом веб-службы wdsl из приложения для Android с помощью kSoap2 v3.1 и продолжаю получать сообщение об ошибке "Не найдено". Я проверил, что URL, Soap_Action, Method_Name и пространство имен являются правильными. Я также искал другие причины, по которым выдается эта ошибка, и никакие другие решения не работают для меня. Веб-сервис размещается локально, а я отлаживаю локально. Я убедился, что служба работает с использованием WC FStorm и WCFTestClient, и все сделанные вызовы выполняются без каких-либо проблем. Я не думаю, что с моим приложением что-то не так, поэтому я искал разные способы привязки в сервисе.

Вот App.config для веб-сервиса

<?xml version="1.0" encoding="utf-8"?>
<configuration>

<configSections>

  <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

   </configSections>
<system.web>
<compilation debug="true" />
 </system.web>   
   <system.serviceModel>    
   <services>
    <service behaviorConfiguration="LocalWCF.Service1Behavior" name="LocalWCF.LocalWCF">
    <endpoint address="http://localhost/LocalWCF/LocalWCF.LocalWCF.svc/" binding="basicHttpBinding" contract="LocalWCF.ILocalWCF" >          
        <identity>
            <dns value="localhost" />          
         </identity>        
    </endpoint>        
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost/LocalWCF/LocalWCF.LocalWCF.svc/" />
      </baseAddresses>
    </host>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="LocalWCF.Service1Behavior">

      <serviceMetadata httpGetEnabled="True" />

      <serviceDebug includeExceptionDetailInFaults="True" />
      </behavior>
   </serviceBehaviors>      
  </behaviors>

  </system.serviceModel>
 <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
   <providers>
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
 </entityFramework>
   <connectionStrings>
    <add name="TradersWallDBEntities" connectionString="metadata=res://*/Data.TradersWallDB.csdl|res://*/Data.TradersWallDB.ssdl|res://*/Data.TradersWallDB.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=RADSTATION1000;initial catalog=TradersWallDB;persist security info=True;user id=DefaultUser;password=testpass;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    </connectionStrings>
 <startup>
 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
  </configuration>

А вот метод в приложении, которое вызывает сервис

public long SendUser(User newUser)
{
    final String SOAP_ACTION = "http://tempuri.org/ILocalWCF/AddUserToDB/";
    final String METHOD_NAME = "AddUserToDb";
    final String NAMESPACE = "http://tempuri.org/";
    final String URL = "http://10.0.2.2/LocalWCF/LocalWCF.LocalWCF.svc";
    final String email = newUser.email;
    final String userName= newUser.userName;

    try {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        request.addProperty("userName", userName);
        request.addProperty("email", email);

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);

        /**
        Element e = new Element();
        e.setName("To");
        e.setNamespace("http://schemas.xmlsoap.org/ws/2004/08/addressing");
        e.addChild(Node.TEXT,URL);

        Element e1 = new Element();
        e1.setName("Action");
        e1.setNamespace("http://schemas.xmlsoap.org/ws/2004/08/addressing");
        e1.addChild(Node.TEXT,SOAP_ACTION);

        envelope.headerOut = new Element[]{e,e1};
        */

        HttpTransportSE transport= new HttpTransportSE(URL);
        transport.call(SOAP_ACTION, envelope);

        SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
        return Long.parseLong(response.toString());

    } catch (Exception e) {
        return -1;
    }
}

Любая помощь будет оценена. Я застрял на этом и прошел множество исправлений, но это мое последнее маленькое препятствие. Спасибо!

0 ответов

Другие вопросы по тегам