Для отображения ответа мыла (массива) в Android - PullRequest
1 голос
/ 07 февраля 2012

Я много изучал и пытался ее решить, но я столкнулся с проблемой, чтобы показать ответ на экране.

Сервисный код мыла: ::

POST /ws1.asmx HTTP/1.1
Host: www.xyz.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://xyx.com/webservices/LoadServices"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <LoadServices xmlns="http://xyz.com/webservices/" />
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <LoadServicesResponse xmlns="http://xyz.com/webservices/">
      <LoadServicesResult>
        <anyType />
        <anyType />
      </LoadServicesResult>
    </LoadServicesResponse>
  </soap:Body>
</soap:Envelope>

Я использую 2занятия на Java.И вот его коды.

Сначала я добавляю код Category.java:

import java.util.Hashtable;
import org.ksoap2.serialization.KvmSerializable;
import org.ksoap2.serialization.PropertyInfo;

import android.util.Log;

public class Category implements KvmSerializable
{
    public int CompanyId;               //0
    public int ServiceId;               //1
    public String ServiceMessage;       //2
    public int ServiceCategoryId;       //3
    public boolean IsVisibleForUser;    //4
    public String ServiceName;          //5
    public String Serviceform;          //6
    public char IsActive;               //7
    public String ServiceImage;         //8
    public String ServiceCode;          //9
    public String RequestFulfilledMsg;  //10
    public String ToDoPendingRequest;   //11
    public String CompanyName;          //12
    public String ServiceCategoryName;  //13
    public String ThumbnailImage;       //14    
    public String ServiceDescription;   //15





    public Category()
    {}

     public Category(int coid, int servId, int scid)
     {
         CompanyId = coid;
         ServiceId = servId;
         ServiceCategoryId = scid;

     }


    public Object getProperty(int arg0)
    {
        Log.i("Category", "msg:getProperty");
        switch(arg0)
        {
        case 0:
            return CompanyId;

        case 1:
            return ServiceId;

        case 3:
            return ServiceCategoryId;

        }

        return null;
    }




    public int getPropertyCount()
    {
        Log.i("Category", "msg:getPropertyCount(3)");
        return 3;
    }

    public void getPropertyInfo(int index, Hashtable arg1, PropertyInfo info)
    {
        Log.i("Category", "msg:getPropertyInfo");
        switch (index)
        {
        case 0:
            info.type = PropertyInfo.INTEGER_CLASS;
            info.name = "CompanyId";
            break;

        case 1:
            info.type = PropertyInfo.INTEGER_CLASS;
            info.name = "ServiceId";
            break;

        case 3:
            info.type = PropertyInfo.INTEGER_CLASS;
            info.name = "ServiceCategoryId";
            break;


            default:
                break;
        }

    }


    public void setProperty(int index, Object value)
    {
        Log.i("Category", "msg:SetProperty");
        switch (index)
        {

        case 0:
            CompanyId = Integer.parseInt(value.toString());
            break;

        case 1:
            ServiceId = Integer.parseInt(value.toString());
            break;

        case 3:
            ServiceCategoryId = Integer.parseInt(value.toString());
            break;


        default:
            break;
        }

    }

}

А теперь код активности root, т.е. WebServiceEx.java

public class WebServiceEx extends Activity
{
    private final String NAMESPACE = "http://xyz.com/webservices/";
    private final String URL = "http://www.abc.com/ws1.asmx";
    private final String SOAP_ACTION = "http://xyz.com/webservices/LoadServices";
    private final String METHOD_NAME = "LoadServices";

    //public Array array = null;
    //String arr[] = null;

    TextView tv;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        tv = new TextView(this);

        LoadSoapService();
        setContentView(tv);
    }


    private void LoadSoapService()
    {
        Log.i("WebService", "msg:soap enter");
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);


        Category C = new Category();
        C.ServiceCategoryId = 1;
        Log.i("WebService", "msg:Category");

        Log.i("WebService", "msg:Property");

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

        Log.i("WebService", "msg:Request");

        envelope.addMapping(NAMESPACE, "Category", new Category().getClass());

        HttpTransportSE transportSE = new HttpTransportSE(URL);

        Log.i("WebService", "msg:try_out");
        try
        {
                                Log.i("WebService", "msg:try+in");
            transportSE.call(SOAP_ACTION, envelope);                            
                                Log.i("WebService", "msg:SoapObject");
            SoapObject response = (SoapObject)envelope.getResponse();               /**error here, wents to exception **/

                                Log.i("WebService", "Response");

                                Log.i("WebSrv", response.toString());


            C.ServiceCategoryId = Integer.parseInt(response.getProperty(3).toString());

            tv.setText(" "+C.ServiceCategoryId);


        }
        catch (Exception e) 
        {
            e.printStackTrace();
            Log.i("WebService", "msg:Exception error");
        }

    }
}

Я должен был добавить комментарий о том, где возникает проблема. Более того, если я что-то упустил, скажите мне, поскольку все перед вами.

Я добавил ksoap2 во внешний Jar и добавил разрешения для Интернета., Все, что у меня есть проблема, это пустой экран.

Надеюсь получить хоть какую-то идею,

Спасибо, Harpreet.

1 Ответ

3 голосов
/ 07 февраля 2012

На вашем месте я бы сделал

private void LoadSoapService()

этот метод следующим образом:

private String LoadSoapService()

, который возвращает Integer.parseInt(response.getProperty(3).toString()); и устанавливает для TextViews текст

tv.setText(LoadSoapService);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...