Как я могу анализировать JSON в android с помощью SOAP?

Я пытаюсь проанализировать данные JSON из веб-сервиса с помощью SOAP в android. Мои данные отображаются в отладчике, но не в приложении. Я использую SOAP, потому что в моем веб-сервисе данные JSON находятся в XML-тегах. Когда я вызываю JSONOBJECT в своем MainActivity, он создает исключение и не вводит в цикл for. Это обычно дает мне ошибку, что строка не может быть преобразована в JSONOBJECT или целое число не может быть преобразовано в JSONOBJECT. Я хочу показать ll данные внутри списка, для которого я использую другой класс TableAdapter, и я также использую модель с именем Table в котором вызываются функции getter & setter.Скажи мне, что делать.

Вот моя основная деятельность

 public class MainActivity extends AppCompatActivity implements MyInterface
{

ListView List;
TableAdapter adapter;
ArrayList<Table> tableArrayList;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    List = (ListView) findViewById(R.id.list);
    tableArrayList = new ArrayList<Table>();

    String SOAP_ACTION = "http://tempuri.org/xxxx";
    String OPERATION_NAME = "xxxx";

    WebServiceHandler webServiceHandler = new WebServiceHandler(MainActivity.this);
    webServiceHandler.setValues(SOAP_ACTION, OPERATION_NAME);
    try
    {
        webServiceHandler.executeProcedure();
    }
    catch (Exception e)
    {
        Toast.makeText(this, "cant connect", Toast.LENGTH_SHORT).show();
    }
}
@Override
public void StartedRequest()
{

}



   @Override
    public void CodeFinished(String methodName, Object Data) {
//        String str = Data.toString();
//        if (str != null)
        {
            try
            {
                JSONObject jsonObject = new JSONObject(String.valueOf(data));
                JSONArray jsonArray = jsonObject.getJSONArray("Table");
                for( int i=0; i < jsonArray.length(); i++ )
                {
                    Table table = new Table();
                    JSONObject jsonObject1 = jsonArray.getJSONObject(i);
                    table.setRequestID(jsonObject1.getInt("Request_ID"));
                    table.setOwnerID(jsonObject1.getInt("Owner_ID"));
                    table.setCustomerID(jsonObject1.getInt("Customer_ID"));
                    table.setAssetName(jsonObject1.getString("AssetName"));
                    table.setAddress(jsonObject1.getString("Address"));
                    table.setDateTime(jsonObject1.getString("DateTime"));
                    table.setOwnerName(jsonObject1.getString("OwnerName"));
                    table.setCustomerName(jsonObject1.getString("CustomerName"));

                    tableArrayList.add(table);
                }
            }
            catch (JSONException e)
            {
                e.printStackTrace();
            }
            TableAdapter adapter = new TableAdapter(getApplicationContext(), R.layout.row, tableArrayList);
            List.setAdapter(adapter);
        }
    }


@Override
    public void CodeFinishedWithException(Exception ex, String exp)
    {

    }

    @Override
    public void CodeEndedRequest()
    {

    }
}

Это код

в которой я сталкиваюсь с проблемой. Отладчик не входит в этот цикл for.

 @Override
    public void CodeFinished(String methodName, Object Data) {
//        String str = Data.toString();
//        if (str != null)
        {
            try
            {
                JSONObject jsonObject = new JSONObject(String.valueOf(data));
                JSONArray jsonArray = jsonObject.getJSONArray("Table");
                for( int i=0; i < jsonArray.length(); i++ )
                {
                    Table table = new Table();
                    JSONObject jsonObject1 = jsonArray.getJSONObject(i);
                    table.setRequestID(jsonObject1.getInt("Request_ID"));
                    table.setOwnerID(jsonObject1.getInt("Owner_ID"));
                    table.setCustomerID(jsonObject1.getInt("Customer_ID"));
                    table.setAssetName(jsonObject1.getString("AssetName"));
                    table.setAddress(jsonObject1.getString("Address"));
                    table.setDateTime(jsonObject1.getString("DateTime"));
                    table.setOwnerName(jsonObject1.getString("OwnerName"));
                    table.setCustomerName(jsonObject1.getString("CustomerName"));

                    tableArrayList.add(table);
                }
            }
            catch (JSONException e)
            {
                e.printStackTrace();
            }
            TableAdapter adapter = new TableAdapter(getApplicationContext(), R.layout.row, tableArrayList);
            List.setAdapter(adapter);
        }

Вот мой веб-сервис

   <string >
{ "Table": [ { "Request_ID": 2112, "Owner_ID": 1668, "Customer_ID": 1476, "AssetName": "Two Bed Room House", "Address": "xyz", "DateTime": "12/24/2016 1:18:44 PM", "OwnerName": "IAmAOwner", "OwnerNumber": "+923363636013", "CustomerName": "arham" }, { "Request_ID": 2113, "Owner_ID": 1668, "Customer_ID": 1476, "AssetName": "Two Bed Room House", "Address": "xyz", "DateTime": "12/24/2016 1:45:00 PM", "OwnerName": "IAmAOwner", "OwnerNumber": "+923363636013", "CustomerName": "arham" }, { "Request_ID": 2121, "Owner_ID": 1668, "Customer_ID": 1476, "AssetName": "Two Bed Room House", "Address": "xyz", "DateTime": "12/26/2016 3:57:45 PM", "OwnerName": "IAmAOwner", "OwnerNumber": "+923363636013", "CustomerName": "arham" }, { "Request_ID": 2124, "Owner_ID": 1668, "Customer_ID": 1476, "AssetName": "Two Bed Room House", "Address": "xyz", "DateTime": "12/26/2016 4:43:19 PM", "OwnerName": "IAmAOwner", "OwnerNumber": "+923363636013", "CustomerName": "arham" }, { "Request_ID": 2125, "Owner_ID": 1668, "Customer_ID": 1476, "AssetName": "Two Bed Room House", "Address": "xyz", "DateTime": "12/26/2016 4:50:39 PM", "OwnerName": "IAmAOwner", "OwnerNumber": "+923363636013", "CustomerName": "arham" }, { "Request_ID": 2126, "Owner_ID": 1668, "Customer_ID": 1476, "AssetName": "Two Bed Room House", "Address": "xyz", "DateTime": "12/27/2016 1:19:32 PM", "OwnerName": "IAmAOwner", "OwnerNumber": "+923363636013", "CustomerName": "arham" }, { "Request_ID": 2127, "Owner_ID": 1668, "Customer_ID": 1476, "AssetName": "Two Bed Room House", "Address": "xyz", "DateTime": "12/27/2016 1:27:36 PM", "OwnerName": "IAmAOwner", "OwnerNumber": "+923363636013", "CustomerName": "arham" }, { "Request_ID": 2128, "Owner_ID": 1668, "Customer_ID": 1476, "AssetName": "Two Bed Room House", "Address": "xyz", "DateTime": "12/27/2016 1:35:38 PM", "OwnerName": "IAmAOwner", "OwnerNumber": "+923363636013", "CustomerName": "arham" }, { "Request_ID": 2129, "Owner_ID": 1668, "Customer_ID": 1476, "AssetName": "Two Bed Room House", "Address": "xyz", "DateTime": "12/27/2016 1:38:08 PM", "OwnerName": "IAmAOwner", "OwnerNumber": "+923363636013", "CustomerName": "arham" } ] }
</string>

2 ответа

  1. public void CodeFinished(String methodName, Object Data) 
    

    Здесь Data не является строковым объектом. это может быть причиной проблемы.
    Это может быть простой объект java {может быть pojo} класс, который нельзя преобразовать в string.

  2. Попробовать это:

    SoapPrimitive resultSoapPrimitive;
    resultSoapPrimitive = (SoapPrimitive) Data.getResponse();
    if (resultSoapPrimitive != null) {
        result = resultSoapPrimitive.toString();
    }