Android ОСТАВИТЬ комментарий на веб-сайте

#android

#Android

Вопрос:

Я пытаюсь опубликовать комментарий на веб-сайте, сообщение, похоже, не выдает ошибку, но, похоже, тоже не сработало. Я не уверен, где я ошибся? Я вызываю это в отдельном потоке

     Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            HttpURLConnection conn = null;
            try {
                String urlString = mainUrl  "?name="   name;
                URL url = new URL(urlString);

                conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("POST");
                conn.setDoOutput(true);
                conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                conn.getOutputStream().write(comment.getBytes("UTF8"));
                conn.connect();

                int responseCode = conn.getResponseCode();
                Log.d("Response Code: ", ""   responseCode);


            } catch (Exception e) {
                Log.e("POST ERROR", e.toString());
            }
            finally {
                if (conn != null) {
                    conn.disconnect();
                }
            }
        }
    });
    thread.start();
  

Комментарии:

1. Очистить буфер выходного потока

Ответ №1:

Попробуйте это:

     try {
            String urlString = mainUrl  "?name="   name;
            url = new URL(urlString);
            urlConnection =(HttpURLConnection) url.openConnection();
            urlConnection.setRequestProperty("Content-Type", "application/json");
            urlConnection.setRequestMethod("POST");
            urlConnection.setDoInput(true);
            urlConnection.setDoOutput(true);
            urlConnection.connect();
            setupDataToDB();
            outputStreamWriter = new OutputStreamWriter(urlConnection.getOutputStream());
            outputStreamWriter.write(dataToWrite.toString());
            Log.e("Data To Write", dataToWrite.toString());

            outputStreamWriter.flush();
            outputStreamWriter.close();
            int responseCode = urlConnection.getResponseCode();
            Log.e("Response Code ", String.valueOf(responseCode));
            if (responseCode == 404){
                Log.e("Status Code", "404");
            }else if (responseCode == 200){
                Log.e("Status Code", "200");
        } catch (Exception e) {
            urlConnection.getErrorStream();
            e.printStackTrace();
        }

    private void setupDataToDB() {
        dataToWrite = new JSONObject();
        try {
            dataToWrite.put("comment", comment);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
  

и не забудьте объявить их как глобальные переменные:

 private HttpURLConnection urlConnection;
private URL url;
private OutputStreamWriter outputStreamWriter;
private JSONObject dataToWrite;
  

Надеюсь, это поможет!!!