我在httpclient
中使用asynctask doInBackground
获取php-session
值
这是我的Java
代码:
package com.example.example;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
public class MainActivity extends Activity {
private String aktuell_date_u,set_check;
public static DefaultHttpClient client = new DefaultHttpClient();
private ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_main);
pd = new ProgressDialog(MainActivity.this);
pd.setMessage("bitte warten...");
pd.show();
new get_sessions();
}
private class get_sessions extends AsyncTask<String, Void, JSONObject> {
@Override
protected JSONObject doInBackground(String... arg0) {
HttpGet post = new HttpGet("http://www.example.com/getsessions.php");
try {
HttpResponse response = client.execute(post);
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuilder sb = new StringBuilder();
String line = "";
while ((line = rd.readLine()) != null) {
sb.append(line);
break;
}
return new JSONObject(sb.toString());
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(JSONObject result){
aktuell_date_u = result.optString("aktuell_date_u").toString();
set_check = result.optString("set_check").toString();
pd.cancel();
}
}
}
这是我的php
代码:
<?php
session_start();
header('content-type: aplication/json; charset=utf-8');
setcookie("cookie_test", date('U'));
$aktuell_date_u=date('U');
$_SESSION['set_check']=md5($aktuell_date_u);
echo '{"aktuell_date_u":"'.$aktuell_date_u.'","set_check":"'.$_SESSION['set_check'].'"}';
?>
PregressDialog
加载并加载......
我做错了什么,因为我的httpclient codes
工作了doInBackground
特别感谢
答案 0 :(得分:2)
您没有调用AsyncTask
的{{1}}方法,因此AsyncTask永远不会运行。而不是
execute()
您需要致电:
new get_sessions();
由于您没有使用传递给new get_sessions().execute(null);
的参数,我不确定您为什么将它们定义为doInBackground()
。
您可能还应该查看一些关于Java编码约定的基本培训并遵循它们 - 比如使类名称以大写字母开头,而骆驼套管它们而不是使用下划线。以下约定使您的代码更易于其他人阅读。