Java 通过HttpUrlConnection在线程中等待响应
我有一个向服务器发送url请求并获取数据的函数。我能够获取数据,但由于请求正在另一个线程中发送,数据来得很晚 我希望用户等待请求(用于登录验证)。如何做到这一点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
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”方法。这是您将记录用户、隐藏消息或错误的地方。