Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过HttpUrlConnection在线程中等待响应_Java_Android_Httpurlconnection - Fatal编程技术网

Java 通过HttpUrlConnection在线程中等待响应

Java 通过HttpUrlConnection在线程中等待响应,java,android,httpurlconnection,Java,Android,Httpurlconnection,我有一个向服务器发送url请求并获取数据的函数。我能够获取数据,但由于请求正在另一个线程中发送,数据来得很晚 我希望用户等待请求(用于登录验证)。如何做到这一点 private String sendRequest(final String URL) { StrictMode.ThreadPolicy policy = new StrictMode. ThreadPolicy.Builder().permitAll().build(); StrictMode.set

我有一个向服务器发送url请求并获取数据的函数。我能够获取数据,但由于请求正在另一个线程中发送,数据来得很晚

我希望用户等待请求(用于登录验证)。如何做到这一点

private String sendRequest(final String URL) {
     StrictMode.ThreadPolicy policy = new StrictMode.
     ThreadPolicy.Builder().permitAll().build();
     StrictMode.setThreadPolicy(policy);

     new Thread(new Runnable() {
       public void run() {
        // TODO Auto-generated method stub
            HttpURLConnection httpUrlConnection = null;

            try {
                httpUrlConnection = (HttpURLConnection) new URL(URL)
                        .openConnection();

                InputStream in = new BufferedInputStream(
                        httpUrlConnection.getInputStream());

                data = readStream(in);
                Log.i(TAG,"Respose from "+URL);
                System.out.println(data);

            } catch (MalformedURLException exception) {
                Log.e(TAG, "MalformedURLException");
            } catch (IOException exception) {
                Log.e(TAG, "IOException");
            } finally {
                if (null != httpUrlConnection)
                    httpUrlConnection.disconnect();
            }
       }                        
}).start();

return data;
}
我这样调用上面的函数

public JSONObject get(String URL){

        data = sendRequest(URL);        

        try {
            if(null!=data){
                returnJsonObj = new JSONObject(data);
            }else{
                Log.i(TAG,"Response data is null");
            }

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return returnJsonObj;   
    }

如何在get函数中等待数据

为什么不使用
AsyncTask
?您应该为此使用AsyncTask。下面是使用asynctask发送和接收http数据的教程asynctask将如何更新返回数据?在使用AsyncTask和在“doInBackground”方法中执行网络请求/响应时,您应该在屏幕上显示“Logging in”消息。当所有通信结束,您收到http响应时,后台线程将结束,进程将进入“onPostExecute”方法。这是您将记录用户、隐藏消息或错误的地方。