簡體   English   中英

為什么AsyncTask連接不返回任何內容?

[英]why AsyncTask Connection Does not return anything?

我有一個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方法中的內部代碼在doInBackground工作得很好並返回hello world,但是android studio卻不行。 我補充說,我已經增加了互聯網許可,同時也沒有例外。 問題是,您好世界不會返回。 將打印一個空字符串。

問題出在線路上:

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

我只是將其更改為:

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

顯然,Android運行的解釋器與jvm不同。 並且ready()函數的工作方式與jvm中不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM