Доступ к веб-сервису Java в Android - PullRequest
0 голосов
/ 13 февраля 2012

У меня проблема при вызове веб-службы Java из приложения Android с использованием ksoap2.Мой класс веб-сервиса имеет закрытую переменную, и я использовал getters & setters для обновления этой переменной.Я хочу получить значение для приложения Android с помощью метода get.Как я могу это сделать?Пожалуйста, помогите мне!Я новичок в программировании.

Мой класс веб-службы:

public class Customer {
    private String customerName;

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

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

package com.testversiontwo.ws;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

import android.app.Activity;
import android.os.Bundle;

public class TestVTwoClientActivity extends Activity {
    private static final String SOAP_ACTION = "http://ws.customer.com";
    private static final String METHOD_NAME = "getCustomerName";
    private static final String NAMESPACE = "http://ws.customer.com/getCustomerName/";
    private static final String URL = "http://175.157.141.120:8085/TestVTwo/services/Customer?wsdl";

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);          

        SoapSerializationEnvelope envelope = new     SoapSerializationEnvelope(SoapEnvelope.VER11);

        envelope.setOutputSoapObject(request);

        HttpTransportSE ht = new HttpTransportSE(URL);
        try {
            ht.call(SOAP_ACTION, envelope);
            SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
            Log.i("myApp", response.toString());

            TextView tv = new TextView(this);
            tv.setText("Message :"+response);
            setContentView(tv);

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

Ответы [ 3 ]

0 голосов
/ 14 февраля 2012

Хорошо, я понял, что getCustomerName возвращает строку, поэтому вы должны сделать:

SoapObject response = (SoapObject)envelope.getResponse();
TextView tv = new TextView(this);
tv.setText("Message :" + response.toString());
setContentView(tv);

Если ошибки все еще есть, опубликуйте трассировку стека исключений.

0 голосов
/ 07 марта 2012

OK !! Я решил эту проблему с помощью базы данных MySQL и создания клиента Android для доступа к этой базе данных MySQL !!!

0 голосов
/ 13 февраля 2012

Я думаю, что ваш URL должен быть:

private static final String URL = "http://175.157.141.120:8085/TestVTwo/services/Customer";
...