HttpURLConnection - 返回格式
Posted
技术标签:
【中文标题】HttpURLConnection - 返回格式【英文标题】:HttpURLConnection - returned format 【发布时间】:2013-03-17 11:49:12 【问题描述】:我正在使用 HttpUrlConnection 来使用 REST 服务。当我执行 GET 时,就像我在下面展示的那样,我不想获取按字符返回的信息。我想以返回的格式获得结果。例如,在这里,我想获得一个布尔值,而不是像 System.out.print((char) ch);
这样的东西。我怎样才能收到它?
我知道我可以将 String 解析为 Boolean 类型,但是如果我收到另一种数据类型呢?
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();
【问题讨论】:
你能和InputStream inStrm
一起玩吗
看看this SO answer。
【参考方案1】:
我会尝试使用BufferedReader
:它允许逐行读取InputStream
,您也许可以这样解析您的数据。
如果您的数据采用 XML 或 JSON 等预定义格式,那么您最好使用库来解析您的响应数据。
【讨论】:
【参考方案2】:您可能想看看如何使用 DataInputStream。你可以使用这个类的readBoolean方法来读取一个布尔值。
DataInputStream 和 DataOutputStream 还为您提供了写入和读取特定数据类型的方法,例如 int、float、long 等
您应该在发送数据的另一端写入 DataOutputStream 类的 writeBoolean。
代码如下所示:
InputStream inStrm = urlConnection.getInputStream();
DataInputStream doi = new DataInputStream(inStrm);
boolean bol = doi.readBoolean();
doi.close();
inStrm.close();
【讨论】:
以上是关于HttpURLConnection - 返回格式的主要内容,如果未能解决你的问题,请参考以下文章
HttpUrlConnection.getInputStream 在 Android 中返回空流