почему AsyncTask Connection ничего не возвращает? - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть класс AsyncTask, который подключается к localurl.соединение не возвращает никаких исключений.На самом деле, когда я запускаю приведенный ниже код на Eclipse как обычный Java-проект, он прекрасно работает.

код в Android Studio:

package parsa.lop.adjust;

import android.os.AsyncTask;

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;

public class SendDietInfo extends AsyncTask<String, Void, String> {

    private PatientMain activity;

    public SendDietInfo(PatientMain activity){
        this.activity = activity;
    }

    @Override
    protected String doInBackground(String... strings) {

        try{
            URL url = new URL("http://10.0.0.3/a.php/");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("POST");
            con.setDoInput(true);
            con.setDoOutput(true);
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(con.getInputStream(),"UTF-8"));
            StringBuilder str = new StringBuilder();
            while(reader.ready()){
                str.append(reader.readLine());
            }
            String s = str.toString();
            reader.close();
            System.out.println(s);
            return s+",,,";
        }catch(Exception e){
            return e.getMessage();
        }
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        activity.sendDietInfoDone(s);
    }
}

и адрес http://10.0.0.3/a.php/ лежит

<?php
echo "hello world"

?>

как получается, что внутренний код в методе doInBackground прекрасно работает в eclipse и возвращает привет, но android studio - нет.Я добавил, что добавил интернет-разрешение, и между тем не происходит никаких исключений.проблема только в том, что привет мир не возвращается.печатается пустая строка.

1 Ответ

0 голосов
/ 17 февраля 2019

проблема была со строкой:

while(reader.ready()){
     str.append(reader.readLine());
}

Я просто изменил ее на:

while((temp = reader.readLine())!= null){
     str.append(temp);
}

очевидно, интерпретатор, который запускает Android, отличается от jvm.Функция ready () не работает так же, как в jvm.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...