Вызов веб-службы Java из Android через ksoap2 - PullRequest
1 голос
/ 29 ноября 2010

Я реализовал веб-сервис Java WelcomMsg, и он работает на Apache Axis. У веб-сервиса есть только один метод greetUs (). Возвращает строку «Привет»: Когда я вызываю с использованием объекта HttpTransport, я получаю исключение и всегда получаю «ложь».

Я предполагаю, что пространство имен здесь. Пожалуйста, посмотрите на код и скажите, что отсутствует / неверно. Я дал метод обслуживания, содержимого wsdl и содержимого мыльного клиента Android.

Метод в сервисе выглядит следующим образом:

public class WelcomeMsg {
public String greetUs()
{

    return "Greetings!!!";
}

}

Вот wsdl:

<?xml version="1.0" encoding="UTF-8"?>

  <wsdl:part element="impl:greetUsResponse" name="parameters">

  </wsdl:part>

  <wsdl:part element="impl:greetUs" name="parameters">

  </wsdl:part>

  <wsdl:operation name="greetUs">

     <wsdl:input message="impl:greetUsRequest" name="greetUsRequest">

   </wsdl:input>

     <wsdl:output message="impl:greetUsResponse" name="greetUsResponse">

   </wsdl:output>

  </wsdl:operation>

  <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

  <wsdl:operation name="greetUs">

     <wsdlsoap:operation soapAction=""/>

     <wsdl:input name="greetUsRequest">

        <wsdlsoap:body use="literal"/>

     </wsdl:input>

     <wsdl:output name="greetUsResponse">

        <wsdlsoap:body use="literal"/>

     </wsdl:output>

  </wsdl:operation>

  <wsdl:port binding="impl:WelcomeMsgSoapBinding" name="WelcomeMsg">

     <wsdlsoap:address location="http://localhost:8080/NewWebService/services/WelcomeMsg"/>

  </wsdl:port>

Мыльный клиент Android выглядит следующим образом:

package com.example.HelloDroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.*;
import org.ksoap2.transport.HttpTransportSE;

public class Droid extends Activity {
    /** Called when the activity is first created. */
     private static final String SOAP_ACTION = "DefaultNamespace";
     private static final String METHOD_NAME = "greetUs";
     private static final String NAMESPACE = "urn:DefaultNamespace";
     private static final String URL = "http://192.168.186.136:12733/NewWebService/services/WelcomeMsg";
     TextView tv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv=(TextView) findViewById(R.id.TextView01);

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);           

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

        HttpTransportSE ht = new HttpTransportSE(URL);


        try{
            ht.call(SOAP_ACTION, envelope);
            //tv.setText("http set");
            SoapPrimitive sp= (SoapPrimitive) envelope.getResponse();
            tv.setText("Msg from service: "+sp);


        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

1 Ответ

2 голосов
/ 29 ноября 2010

Вставили ли вы «android-name-разрешения android.permission.INTERNET» для использования в AndroidManifest.xml?

...