【发布时间】:2014-10-08 14:41:12
【问题描述】:
我们在让 HttpASyncTask 从我们的简单 http 函数返回一个字符串时遇到问题: 只是我们希望能够将数据发送到 URL 并接收我们稍后可以在其他类中使用的正确响应。 httphandler 类在某一点之前确实会收到正确的响应。
这是我们的 httphandler:
public class HttpRequester extends Activity {
static String result;
public String createUser(String username) {
new HttpAsyncTask().execute("http://188.226.252.112/createPlayer.php?name=" + username);
System.out.println("ID at createUser is; " + result); // this also returns null
return result;
}
public static String GET(String url){
InputStream inputStream = null;
try {
// create HttpClient
HttpClient httpclient = new DefaultHttpClient();
// make GET request to the given URL
HttpResponse httpResponse = httpclient.execute(new HttpGet(url));
// receive response as inputStream
inputStream = httpResponse.getEntity().getContent();
// convert inputstream to string
if(inputStream != null)
result = convertInputStreamToString(inputStream);
else
result = "Did not work!";
} catch (Exception e) {
Log.d("InputStream", e.getLocalizedMessage());
}
System.out.println("ID at GET is; " + result); // this returns correct ID
return result;
}
private static String convertInputStreamToString(InputStream inputStream) throws IOException{
StringBuilder sb = new StringBuilder();
String something;
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
while ((something = bufferedReader.readLine()) != null) {
sb.append(something);
}
inputStream.close();
result = sb.toString();
System.out.println("ID at convert is; " + result); // this returns correct ID
return result;
}
public boolean isConnected(){
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected())
return true;
else
return false;
}
private class HttpAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
return GET(urls[0]);
}
}
}
这是另一个类的函数,它必须从 http 处理程序接收数据:
HttpRequester requester = new HttpRequester();
ID = requester.createUser(login);
System.out.println("ID in other class is: " + ID); // this returns null
请帮忙
问候
康荣
【问题讨论】:
标签: java android android-asynctask httprequest