2013-03-27 45 views
0

我正在使用HttpUrlConnection來使用REST服務。當我做GET時,就像我在下面顯示的那樣,我不想獲取char返回的信息。我想以返回的格式得到結果。在這裏,例如,我想要一個布爾值,而不是像System.out.print((char) ch);。我怎樣才能收到它?HttpURLConnection - 返回格式

我知道我可以將字符串解析爲布爾類型,但是如果我接收到另一種數據類型?

public class SensorGetDoorStatus { 

public static void main(String[] args) throws Exception 
{ 
    HttpURLConnection urlConnection = null; 

try { 
    String webPage = "http://localhost:8080/LULServices/webresources/services.sensors/doorstatus"; 
      String name = "xxxx"; 
    String password = "xxxx"; 

      Authenticator myAuth = new Authenticator() 
      { 
       final String USERNAME = "xxxx"; 
       final String PASSWORD = "xxxxx"; 

       @Override 
       protected PasswordAuthentication getPasswordAuthentication() 
       { 
       return new PasswordAuthentication(USERNAME, PASSWORD.toCharArray()); 
       } 
      }; 

      Authenticator.setDefault(myAuth); 

    String authString = name + ":" + password; 
    byte[] authEncBytes = Base64.encodeBase64(authString.getBytes()); 
    String authStringEnc = new String(authEncBytes); 

    URL urlToRequest = new URL(webPage); 
    urlConnection = (HttpURLConnection) urlToRequest.openConnection(); 

    urlConnection.setRequestProperty("Authorization", "Basic " + authStringEnc); 
    System.out.println("Authorization : Basic " + authStringEnc); 

    urlConnection.setRequestMethod("GET"); 
    urlConnection.setRequestProperty("Accept", "application/json");     
    urlConnection.setReadTimeout(15*1000); 
    urlConnection.connect(); 

    InputStream inStrm = urlConnection.getInputStream(); 

    int ch; 
    while (((ch = inStrm.read()) != -1)) 
     System.out.print((char) ch); 
    inStrm.close(); 


} catch (MalformedURLException e) { 
     e.printStackTrace(); 
} catch (IOException e) { 
     System.out.println("Failure processing URL"); 
     e.printStackTrace(); 
} catch (Exception e) { 
     e.printStackTrace(); 
    } 

    finally { 
    if (urlConnection != null) { 
     urlConnection.disconnect(); 
    } 
} 
} 

}

+0

你可以玩弄'的InputStream inStrm' – Abubakkar 2013-03-27 11:55:17

+0

看看[本SO接聽](http://stackoverflow.com/questions/10500775/parse -json從 - HttpURLConnection的對象/ 10501619#10501619)。 – 2013-03-27 12:07:56

回答

1

我玩弄BufferedReader:它允許讀取InputStream一行一行,你可能能夠解析您的數據的方式。

如果您的數據採用XML或JSON之類的預定義格式,那麼最好使用庫來解析您的響應數據。

1

你可能想看看使用DataInputStream。您可以使用此類的readBoolean方法讀取布爾值。

的DataInputStream和DataOutputStream類還爲您提供的方法來寫和讀例如整數,浮點,長等

你應該已經在另一端從正在發送數據寫入類DataOutputStream類的writeBoolean特定的數據類型。

的代碼看起來像follwoing:

InputStream inStrm = urlConnection.getInputStream(); 
DataInputStream doi = new DataInputStream(inStrm); 
boolean bol = doi.readBoolean(); 

    doi.close(); 
    inStrm.close();