How To Send json Object to the server from my android app

前端 未结 4 903
盖世英雄少女心
盖世英雄少女心 2020-11-30 09:25

I\'m at a bit of a loss as to how to send a jsonobject from my android application to the database

As I am new to this I\'m not too sure where I\'ve gon

4条回答
  •  被撕碎了的回忆
    2020-11-30 09:52

    You need to be using an AsyncTask class to communicate with your server. Something like this:

    This is in your onCreate method.

    Button submitButton = (Button) findViewById(R.id.submit_button);
    
    submitButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            JSONObject postData = new JSONObject();
            try {
                postData.put("name", name.getText().toString());
                postData.put("address", address.getText().toString());
                postData.put("manufacturer", manufacturer.getText().toString());
                postData.put("location", location.getText().toString());
                postData.put("type", type.getText().toString());
                postData.put("deviceID", deviceID.getText().toString());
    
                new SendDeviceDetails().execute("http://52.88.194.67:8080/IOTProjectServer/registerDevice", postData.toString());
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    });
    

    This is a new class within you activity class.

    private class SendDeviceDetails extends AsyncTask {
    
        @Override
        protected String doInBackground(String... params) {
    
            String data = "";
    
            HttpURLConnection httpURLConnection = null;
            try {
    
                httpURLConnection = (HttpURLConnection) new URL(params[0]).openConnection();
                httpURLConnection.setRequestMethod("POST");
    
                httpURLConnection.setDoOutput(true);
    
                DataOutputStream wr = new DataOutputStream(httpURLConnection.getOutputStream());
                wr.writeBytes("PostData=" + params[1]);
                wr.flush();
                wr.close();
    
                InputStream in = httpURLConnection.getInputStream();
                InputStreamReader inputStreamReader = new InputStreamReader(in);
    
                int inputStreamData = inputStreamReader.read();
                while (inputStreamData != -1) {
                    char current = (char) inputStreamData;
                    inputStreamData = inputStreamReader.read();
                    data += current;
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (httpURLConnection != null) {
                    httpURLConnection.disconnect();
                }
            }
    
            return data;
        }
    
        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            Log.e("TAG", result); // this is expecting a response code to be sent from your server upon receiving the POST data
        }
    }
    

    The line: httpURLConnection.setRequestMethod("POST"); makes this an HTTP POST request and should be handled as a POST request on your server.

    Then on your server you will need to create a new JSON object from the "PostData" which has been sent in the HTTP POST request. If you let us know what language you are using on your server then we can write up some code for you.

提交回复
热议问题