返回localhost上的文本文件的内容

时间:2017-04-13 15:29:11

标签: java android runnable

我试图将localhost(wamp服务器)上的文本文件的内容作为字符串返回。我可以读取文本文件,但我无法返回一个字符串,因为Runnable的函数运行是一个void。我正在使用Android Studio(这就是我使用线程的原因)。

book.id

2 个答案:

答案 0 :(得分:0)

通常,Volley库比原始Thread更受欢迎。或AsyncTask

  

但我无法返回一个字符串,因为Runnable的函数运行是一个空白

但是,您可以结果传递给新方法。

定义界面

public interface ServerResponse {
    void onResponse(String msg);
}

添加参数

public void serverToString(final ServerResponse callback)
{
    String str;
    Thread t = new Thread(new Runnable() {
        public void run() {
            try {
                URL url = new URL("http://myIP/test.txt");
                BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
                callback.onResponse(in.readLine()); // This is the 'return' now
                in.close();
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Throwable th) {
                th.printStackTrace();
            }
        }
    });
    t.start();
}

而不是这个

String response = serverToString();

这样做

serverToString(new ServerResponse() {
    @Override 
    public void onResponse(String response) {
        // handle message
    }
});

答案 1 :(得分:0)

推进Cricket答案,我通常创建一个AsyncTask,在其中我定义了一个回调接口。 执行此任务的活动应实现此接口。 作为部分代码的示例:

公共类TeamUpdateTask扩展了AsyncTask,Object,TeamUpdateResponse> {

private TeamUpdateTaskCallback mListener;


@Override
public void onPostExecute (TeamUpdateResponse result) {
    if (exception == null) {
        mListener.OnTeamUpdateCompleted(result);
    } else {
        processException();
    }
}

 public void setListener (TeamUpdateTaskCallback listener) {
    mListener = listener;
}

public interface TeamUpdateTaskCallback {
    void OnTeamUpdateCompleted (TeamUpdateResponse response);
}

}

希望它有所帮助。