Отправьте сообщение на сервер и получите результат через android - PullRequest
0 голосов
/ 17 января 2020

Если я хочу прочитать json из веб-API, сначала мне нужно ПОСТАВИТЬ немного json на сервер, поэтому мой код будет:

   private class AsyncFetch extends AsyncTask<String, String, String> {
      HttpURLConnection conn = null;
      InputStream inputStream = null;
      StringBuffer out = new StringBuffer();
      @Override
        protected String doInBackground(String... params) {
         try {
                URL url = new URL("http://10.54.180.18:8090/TV/api/GetUserInfo");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setRequestProperty("Authorization", default_token);
            conn.setRequestProperty("Accept", "application/json");
            conn.setDoOutput(true);
            conn.setDoInput(true);

            JSONObject jsonObject = new JSONObject();
            jsonObject.put("accountNo", "cb2c2041d9763d84d7d655e81178f444");
            jsonObject.put("stationNo", "NURS4");
            jsonObject.put("bedNo", "329-1");

            DataOutputStream os = new DataOutputStream(conn.getOutputStream());
            os.writeBytes(URLEncoder.encode(jsonObject.toString(), "UTF-8"));

            os.flush();
            os.close();

            //get response
            inputStream = conn.getInputStream();
            StringBuffer out = new StringBuffer();
            byte[] b = new byte[4096];
            for (int n; (n = inputStream.read(b)) != -1;) {
                out.append(new String(b, 0, n));
            }
       } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(conn != null) {
                conn.disconnect();
            }
        }
        return out.toString();

Теперь я хочу увидеть результат покоя ( JSON), что мне делать? пожалуйста, помогите мне, спасибо.

1 Ответ

0 голосов
/ 17 января 2020

Используйте AsyncTask вместо Thread для отправки данных на сервер. Предлагает методы

  1. preExecute ()
  2. doInBackround ()
  3. onProgressUpdate
  4. postExecute ()

переопределяет эти методы. напишите свой код для подключения к серверу внутри метода doInBackground (). Обработать результат в postExecute ()

создать класс - класс MyTask расширяет AsyncTask {

protected void onPreExecute() {
    super.onPreExecute();

}

protected String doInBackground(Void...arg0) {
    //String result = write code to connect to server & send data in background thread
    return result;
}

protected void onProgressUpdate(Integer...a) {
    super.onProgressUpdate(a);

}

protected void onPostExecute(String result) {
    super.onPostExecute(result);

}

}

вызывать его в действии new MyTask (). Execute ( );

перейдите по ссылкам

https://developer.android.com/reference/android/os/AsyncTask

...