如何从服务器获取响应,如果这包含“打开”,我可以调用其他方法,“包含”始终标记错误

时间:2017-05-22 20:33:45

标签: java android

/ 每次发送GPS脉冲的方法,当收到服务器的答案时,如果它包含“打开”我必须停止发送脉冲消除脉冲的方法我已经有了,我只需要知道如果服务器响应包含“打开”,因为来自服务器的响应是来自JSON的字符串太大 /

    @Override
    protected String doInBackground(String... params) {
        HttpURLConnection urlConnection = null;
        BufferedReader bufferedReader = null;

        final String routeId = ControlClass.pref.getString("routeId", "inaccesible");
        int routeId2= Integer.parseInt(routeId);
        try {
            URL url = new URL(params[0]);
            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("POST");
            urlConnection.setUseCaches(false);
            urlConnection.setDoInput(true);
            urlConnection.setDoOutput(true);
            urlConnection.setRequestProperty("Content-Type",
                    "application/x-www-form-urlencoded");

            DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
            JSONObject jsonParam = new JSONObject();
            jsonParam.put("route_id", routeId2);
            jsonParam.put("timestamp", timestamp);
            jsonParam.put("lat", 19.5216103);
            jsonParam.put("lon", -99.21071050509521);

            Log.d("BANDERA", "LIVE TRACKING");
            Log.d("JSON DEL LIVE TRACKING", jsonParam.toString());
            System.out.println("Latitud y longitud" + currentLatitude + currentLongitude);


            wr.writeBytes(jsonParam.toString());
            wr.flush();
            wr.close();
            urlConnection.connect();
               try {
                    InputStream is = urlConnection.getInputStream();
                    bufferedReader = new BufferedReader(new InputStreamReader(is));
                    String line;
                    StringBuilder response = new StringBuilder();
                    while ((line = bufferedReader.readLine()) != null) {
                        response.append(line);
                        response.append('\r');
                    }
                    bufferedReader.close();
                    if(serverAnswer.contains("open"))
                        killGps();
                    serverAnswer = response.toString();
                    System.out.println("LIVE TRACKING RESPONSE" +  serverAnswer);
                    Log.d("LIVE TRACKING RESPONSE", serverAnswer);
                    return response.toString();
                } catch (FileNotFoundException e) {
                     Log.d("ERROR: ", "File not found en servidor Response: " + serverAnswer);
                }

            } catch(Exception e){
                e.printStackTrace();
                return null;
            } finally{
                if (urlConnection != null) {
                    urlConnection.disconnect();
                }
                try {
                    if (bufferedReader != null) {
                        bufferedReader.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return serverAnswer;
    }

}

1 个答案:

答案 0 :(得分:1)

如果您不需要整个回复,请不要存储它。只需在流式传输时搜索每一行,然后在找到要查找的文本后退出:

while ((line = bufferedReader.readLine()) != null) {
    if (line.contains("open")) {
        killGps();
        break;
    }
}