2012-06-30 5 views
0

JAX-WS, WSDL로 빌드하고 Android ListView에서 구현하려는 웹 서비스의 데이터를 가져 오려고합니다.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; 
    } 

} 

아무에게도 도움이되고 싶지 않습니다. 미리 감사드립니다.

+0

문제가 해결 되었습니까? –

+0

예, 그랬습니다. @ 기호가있는 문자열을 반환하는 샘플 웹 서비스 코드를 사용했습니다. 그런 다음 ANdroid에서 @s 문자열을 분리하여 "itemsList"배열에 저장합니다. 하지만 또 다른 문제가 있습니다. 2 차원 배열을 구현하는 것과 같이 두 가지 다른 종류의 데이터로 어떻게 처리 할 수 ​​있습니까?하지만 어떻게 해야할지 모르겠습니다. 감사합니다 – AdityaSetyadi

+0

나는 당신의 문제를 얻지 못했습니다. 당신은 설명 할거예요. –

답변

2

Android는 SOAP 웹 서비스를 지원하지 않습니다. 그들은 XML 또는 JSON을 사용하여 우리가 사용하는 편리한 웹 서비스를 선호합니다. 그러나 거기에 몇 가지 SOAP 라이브러리가 있습니다. KSOAP은 매우 인기가 있으며 개인적으로 문제가 있습니다. http://ksoap2.sourceforge.net/

또 다른 제안은 icesoap입니다. 그것을 사용하고 이해하는 것은 아주 간단한 라이브러리입니다, 그것은 나를 위해 매력처럼 일했습니다. http://code.google.com/p/icesoap/

+0

사실, 나는 ksoap, 미안, 내 거짓에 그것을 구축, – AdityaSetyadi

+0

json을 사용하여 나머지 웹 서비스를 테스트하는 코드를 제공 할 수 있습니까? –

+0

IceSoap에서 세션 자동 수정 작업을하셨습니까? –

0

2D 배열의 결과 데이터 의 경우 데이터를 가져 와서 String으로 변환하십시오. 그런 다음 배열

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(); 
     } 

에 그 배열을 얻을하고 적절한 데이터 형식으로 변환하는 안드로이드 전화 장난감 필요성에 보관합니다.

표시하려는 경우 그대로 표시 할 수 있습니다. 원래 데이터 유형으로 변환 할 필요가 없습니다.

+0

가 도움이 될 것입니다. –

+0

예, 시도했지만 안드로이드에서 그것을 소비하는 방법을 모른다. – AdityaSetyadi

+0

또는 이와 같이 JSON과 같이 전달합니다. 어떻게 그것을 소비 할 수 있습니까, 나는 JSONObject로 시도하지만 stiil은 사용법을 모른다. 다음은 JSON [{ "id": "08.5670", "name": "Aditya"}, { "id": "11.1212", "name": "Setyadi"}}입니다. 그건 그렇고, Sachin에게 관심을 가져 주셔서 감사합니다. – AdityaSetyadi

관련 문제