0

我尝试从使用 JAX-WS、WSDL 构建的 Web 服务获取数据,并且我想在 Android ListView 中实现。

这是我在 Netbeans 上构建的 Web 服务中的代码。

/*
 * 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;
    }

}

有没有人想帮助我,至少给我一个关于这个的教程。提前致谢

4

2 回答 2

2

Android 不提供对 SOAP Web 服务的任何支持。他们更喜欢我们使用带有 XML 或 JSON 的 RESTful Web 服务。但是那里有一些 SOAP 库。KSOAP 非常流行,我个人遇到过问题。http://ksoap2.sourceforge.net/

另一个建议是icesoap。这是一个非常易于使用和理解的库,它对我来说就像一个魅力。 http://code.google.com/p/icesoap/

于 2012-06-30T15:10:42.387 回答
0

对于二维数组中的返回数据,只需获取数据并将其转换为字符串。然后将其存储在数组中

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 手机玩具中需要获取该数组并将其转换为适当的数据类型。

如果要显示它,则可以按原样显示。无需转换为其原始数据类型。

于 2012-07-03T12:17:28.037 回答