2009-07-29 67 views
4

我需要一些幫助。使用JME(或J2ME)消費REST服務

我需要知道如何調用REST服務解析xml

我的PHP腳本只發回一些xmlcode,僅此而已。(沒有WSDL和UDDI)

平臺諾基亞5800 S60第三版。(一個將適用) 諾基亞sdk去了相同的名字。 我爲這個項目安裝了Netbeans。

唯一的東西,我覺得是soap based

爲此我可以使用哪些方法/庫?我不得不提到,我也是java/netbeans的新手。

+0

實際上,諾基亞5800的平臺是Series60 FIFTH版本,但這對你的問題沒有關係 – 2009-07-30 18:58:51

+0

是的,你是對的,除了我只能找到sdk第三版。 我不確定如何處理它,但我會發現。 – Richard 2009-07-31 14:26:14

回答

9

要調用REST Web服務可以使用HttpConnection類:

HttpConnection connection = null; 
InputStream is = null; 

final ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

byte[] response = null; 

try { 
    connection = (HttpConnection)Connector.open("http://api.yourserver.com/rest/things/12", Connector.READ); 
    connection.setRequestMethod(HttpConnection.GET); 

    connection.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.1"); 

    if (connection.getResponseCode() == HttpConnection.HTTP_OK) { 
     is = connection.openInputStream(); 

     if (is != null) { 
      int ch = -1; 

      while ((ch = is.read()) != -1) { 
       bos.write(ch); 
      } 

      response = bos.toByteArray(); 
     } 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} finally { 
    try { 
     if (bos != null) { 
      bos.close(); 
      bos = null; 
     } 

     if (is != null) { 
      is.close(); 
      is = null; 
     } 

     if (connection != null) { 
      connection.close(); 
      connection = null; 
     } 
    } catch (Exception e2) { 
     e2.printStackTrace(); 
    } 
} 

現在響應將包含您的服務器吐出XML。您可以使用kXML2庫來解析它。請注意,該庫引用了XMLPull庫,因此您必須將其包含在您的項目中。

2

我正在使用REST,並且使用JSONObject和JSONArrays來處理Java ME中的Mobile Ajax。在REST上工作是一種簡單的方法,庫需要以源代碼格式下載並使用Netbeans或ANT進行編譯,這很容易,只需通過SVN檢查項目並在網頁(WithXML或WithoutXML)中進行構建即可是使用REST和雅虎地圖等公共Web服務的樣本!我希望你喜歡它。