从HttpURLConnection对象解析JSON

我正在使用HttpURLConnectionJava中的对象进行基本的HTTP身份验证。

        URL urlUse = new URL(url);

HttpURLConnection conn = null;

conn = (HttpURLConnection) urlUse.openConnection();

conn.setRequestMethod("GET");

conn.setRequestProperty("Content-length", "0");

conn.setUseCaches(false);

conn.setAllowUserInteraction(false);

conn.setConnectTimeout(timeout);

conn.setReadTimeout(timeout);

conn.connect();

if(conn.getResponseCode()==201 || conn.getResponseCode()==200)

{

success = true;

}

我期望一个JSON对象,或者是有效JSON对象格式的字符串数据,或者是带有简单纯文本(即有效JSON)的HTML。HttpURLConnection返回响应后,如何从中访问它?

回答:

您可以使用以下方法获取原始数据。顺便说一句,此模式适用于Java6。如果您使用的是Java 7或更高版本,请考虑try-with-resources模式。

public String getJSON(String url, int timeout) {

HttpURLConnection c = null;

try {

URL u = new URL(url);

c = (HttpURLConnection) u.openConnection();

c.setRequestMethod("GET");

c.setRequestProperty("Content-length", "0");

c.setUseCaches(false);

c.setAllowUserInteraction(false);

c.setConnectTimeout(timeout);

c.setReadTimeout(timeout);

c.connect();

int status = c.getResponseCode();

switch (status) {

case 200:

case 201:

BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));

StringBuilder sb = new StringBuilder();

String line;

while ((line = br.readLine()) != null) {

sb.append(line+"\n");

}

br.close();

return sb.toString();

}

} catch (MalformedURLException ex) {

Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);

} catch (IOException ex) {

Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);

} finally {

if (c != null) {

try {

c.disconnect();

} catch (Exception ex) {

Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);

}

}

}

return null;

}

然后,您可以将返回的字符串与Google Gson一起使用,以将JSON映射到指定类的对象,如下所示:

String data = getJSON("http://localhost/authmanager.php");

AuthMsg msg = new Gson().fromJson(data, AuthMsg.class);

System.out.println(msg);

有一个AuthMsg类的示例:

public class AuthMsg {

private int code;

private String message;

public int getCode() {

return code;

}

public void setCode(int code) {

this.code = code;

}

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

}

由返回的JSON必须如下所示:

{"code":1,"message":"Logged in"}

以上是 从HttpURLConnection对象解析JSON 的全部内容, 来源链接: utcz.com/qa/423773.html

回到顶部