Использование WSDL для реализации в Android ListView

Я пытаюсь получить данные из веб-службы, которую я создаю с помощью JAX-WS, WSDL и хочу реализовать в Android ListView.

Это мой код в веб-сервисе, который я строю на Netbeans.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package in.figures.on.mobile;

import db.koneksi.dbKoneksi;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import org.json.simple.JSONValue;

/**
 *
 * @author Setyadi
 */
@WebService()
public class AksesData {

    /**
     * Web service operation
     */
    @WebMethod(operationName = "Lokasiku")
    public String Lokasiku(
            @WebParam(name = "lon") String lon,
            @WebParam(name = "lat") String lat) {
        //TODO write your implementation code here:

        dbKoneksi con = new dbKoneksi();
        Statement statement;
        String sql = "SELECT desa "
                + "FROM dki "
                + "WHERE ST_Within(ST_SetSRID(ST_MakePoint("+lon+","+lat+"),0),geom);";
        ResultSet hasil;
        String desa = null;

        try{
            statement = con.getConnection().createStatement();
            hasil = statement.executeQuery(sql);
            hasil.next();
            desa = hasil.getString(1);
        }
        catch(Exception e){
            desa = "desa_thegagals";
        }
        finally{

        }

        if (con != null)  {
            return desa;
        }
        else  {
            return "lokasiku_thegagals";
        }
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "Kategori")
    public String Kategori() {
        //TODO write your implementation code here:

        dbKoneksi con = new dbKoneksi();
        Statement statement;
        Properties properties;
        List list = new ArrayList();
        String sql = "SELECT kategori FROM kategori ";
        ResultSet hasil;
        String kategori = null;

        try{
            statement = con.getConnection().createStatement();
            hasil = statement.executeQuery(sql);
            while (hasil.next()) {
                properties = new Properties();
                properties.put("kategori", hasil.getString(1));
                list.add(properties);
            }
            kategori = JSONValue.toJSONString(list);
        }
        catch(Exception e){
        }

        return kategori;
    }

}

Кто-нибудь хочет мне помочь, по крайней мере, дать мне учебник об этом. заранее спасибо


person AdityaSetyadi    schedule 30.06.2012    source источник
comment
Да, я использовал пример кода веб-сервиса, который возвращает строку со знаками @. Затем я использую его в ANdroid, разделяя строку на @s и сохраняя в массиве itemsList. Но у меня есть другая проблема: как я могу сделать это с двумя разными типами данных, например, мы реализуем двумерный массив, но я не знаю, как это сделать. Спасибо   -  person AdityaSetyadi    schedule 03.07.2012
comment
Я не понял вашей проблемы. Вы объясните или какой-нибудь пример.   -  person Sachin D    schedule 03.07.2012
comment
означает, что вы хотите вернуть int, String, Date все эти типы данных в массиве 2D   -  person Sachin D    schedule 03.07.2012
comment
Да, я хочу вернуть два типа данных. Строка, внутр. Или даже в одном и том же типе данных String, String. Как я могу реализовать это в своем веб-сервисе? А насчет того, чтобы потреблять его на Android-клиенте?   -  person AdityaSetyadi    schedule 03.07.2012


Ответы (2)


Android не поддерживает веб-службы SOAP. Они предпочитают, чтобы мы использовали веб-сервисы RESTful с XML или JSON. однако есть несколько библиотек SOAP. KSOAP очень популярен, лично у меня были проблемы с ним. http://ksoap2.sourceforge.net/

Другое предложение — icesoap. это очень простая библиотека для использования и понимания, она работала как шарм для меня. http://code.google.com/p/icesoap/

person greenkode    schedule 30.06.2012
comment
На самом деле, я строю его на ksoap, извините, мой фальшивый, - person AdityaSetyadi; 30.06.2012
comment
Не могли бы вы предоставить код для тестирования веб-службы отдыха с использованием json? - person John Alexander Betts; 11.03.2015
comment
Вы работали с аутентификацией сеанса на IceSoap? - person Adnen Chouibi; 24.12.2016

Для возврата данных в 2D-массиве просто получите данные и преобразуйте их в строку. Затем сохраните его в массиве

rs = s.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
colCount = rsmd.getColumnCount();
String[][] result;
result = new String[size][rsmd.getColumnCount()];

int j=0;
            while(rs.next()) 
            {

                for (int i = 1; i <= colCount; i++) 
                {

                    Object value=null;
                if(!rsmd.getColumnTypeName(i).matches("varchar"))
                {
                    if(rsmd.getColumnTypeName(i).matches("decimal"))
                        value=(Object)rs.getDouble(i);
                    else
                        value=(Object)rs.getObject(i);
                }
                    else
                    {
                        value = (Object)rs.getString(i);
                    }
                    if(value!=null)
                    {
                        result[j][i-1]=value.toString();
                    }
                    else
                    {
                        result[j][i-1]="--";
                    }
                }j++;
            }
        }
        catch (SQLException | ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

и в игрушке Android-телефона нужно получить этот массив и преобразовать его в соответствующий тип данных.

Если вы собираетесь отображать его, вы можете отображать как есть. Нет необходимости преобразовывать в исходный тип данных.

person Sachin D    schedule 03.07.2012
comment
Да, я пробовал, но я не знаю, как использовать его в Android. - person AdityaSetyadi; 03.07.2012
comment
Или, вот так, я передаю с JSON вот так. как я могу его использовать, я пытаюсь использовать JSONObject, но все еще не знаю, как его использовать. Вот JSON [{id:08.5670,name:Aditya},{id:11.1212,name:Setyadi}]. Я хочу поместить его в двухмерный массив. Спасибо, Сачин, за внимание, кстати. - person AdityaSetyadi; 03.07.2012
comment
Я пытаюсь более подробно спросить здесь stackoverflow.com/questions/11318761/json-android -просмотр списка - person AdityaSetyadi; 04.07.2012
comment
Извините, я не знаю о Json. Я могу помочь вам только с KSOAP. - person Sachin D; 04.07.2012