Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中解析来自节点js服务器的JSON响应_Java_Android_Node.js - Fatal编程技术网

在Java中解析来自节点js服务器的JSON响应

在Java中解析来自节点js服务器的JSON响应,java,android,node.js,Java,Android,Node.js,我有一个节点js服务器,使用以下方法: app.get('/GetValues*', function (request, response) { // Request needs to be a GET if (request.method == 'GET') { var username = request.query.account; var time_now = Date.now(); var db = database

我有一个节点js服务器,使用以下方法:

app.get('/GetValues*', function (request, response) {
    // Request needs to be a GET
    if (request.method == 'GET') {

        var username = request.query.account;
        var time_now = Date.now();

        var db = database('./database.db'); 
        var row = db.prepare('SELECT SCORE_OFFSET score_offset, STARTED_STUDY_SERVER_MILLIS timestamp, DAYS_TOTAL days_total, DURATION_ENABLED_OFFSET duration_enabled_offset, DURATION_DISABLED_OFFSET duration_disabled_offset FROM ACCOUNTS WHERE NAME = ?').get(username);

        var score_offset = row.score_offset;
        var days_total = row.days_total;
        if (row.timestamp && (row.timestamp > 0)) {
            var days_count = (time_now - row.timestamp) / (24 * 60 * 60 * 1000);
        } else {
            var days_count = 0;
        }

        var statement = db.prepare("UPDATE ACCOUNTS SET DAYS_COUNT = ? WHERE ID = ?");
        statement.run(days_count,getAccountID(db, request.query.account));

        var duration_enabled_offset = row.duration_enabled_offset;
        var duration_disabled_offset = row.duration_disabled_offset;

        var stmt = db.prepare("UPDATE ACCOUNTS SET DURATION_ENABLED_OFFSET = ?, DURATION_DISABLED_OFFSET = ?, SCORE_OFFSET = ? WHERE ID = ?");
        stmt.run([0, 0, 0, getAccountID(db, request.query.account)]);

        response.json({
            score_offset: score_offset,
            days_total: days_total,
            days_count: days_count,
            duration_enabled_offset: duration_enabled_offset,
            duration_disabled_offset: duration_disabled_offset
        });
    }
});
因此服务器会发回一个json对象。在我的Android客户端中,我想如下解析此响应:

        HttpsURLConnection connection = null;
        // Get URL to server for uploading
        String query = String.format("account=%s",  mAccountName);
        URL url = new URL(SettingValues.SERVER_ADDRESS + "/" + HTTPS_GET_VALUES + "?" + query);
        connection = (HttpsURLConnection) url.openConnection();

        connection.setSSLSocketFactory(mSSLContext.getSocketFactory());
        connection.setDoInput(true);
        connection.setDoOutput(false);
        connection.setUseCaches(false);
        connection.setConnectTimeout(HTTPS_TIMEOUT_VALUE);
        connection.setReadTimeout(HTTPS_READ_TIMEOUT_VALUE);

        connection.setRequestMethod("GET");
        connection.setRequestProperty("Connection", "Keep-Alive");
        String serverResponseMessage = connection.getResponseMessage();
        JSONObject obj = new JSONObject(serverResponseMessage);

不知何故,
connection.getResponseMessage()只返回“Ok”,但不返回实际的json响应。如何解析来自服务器的Json响应?

您能按如下方式解析您的响应吗

try(BufferedReader br = new BufferedReader(
  new InputStreamReader(connection.getInputStream(), "utf-8"))) {
    StringBuilder response = new StringBuilder();
    String responseLine = null;
    while ((responseLine = br.readLine()) != null) {
        response.append(responseLine.trim());
    }
    System.out.println(response.toString());
}

你能试着提取下面的回答吗?试试(BufferedReader br=new BufferedReader(new InputStreamReader(conction.getInputStream(),“utf-8”){StringBuilder response=new StringBuilder();String responseLine=null;while((responseLine=br.readLine())!=null){response.append(responseLine.trim();}System.out.println(response.toString());}很高兴它对你们有用,你们能投票并把它标记为答案吗?