Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.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 如何存储cookie以用于与HttpClient的后续连接_Java_Android - Fatal编程技术网

Java 如何存储cookie以用于与HttpClient的后续连接

Java 如何存储cookie以用于与HttpClient的后续连接,java,android,Java,Android,我有以下代码将登录详细信息发布到网站。它可以工作,但我如何才能有会话cookie,这样我就不必再次登录其他页面 编辑:更新代码 进口 public class Login extends Activity { Button bLogin; EditText teUsername, tePassword; CheckBox chbRememberPass; HttpClient httpclient; HttpResponse response;

我有以下代码将登录详细信息发布到网站。它可以工作,但我如何才能有会话cookie,这样我就不必再次登录其他页面

编辑:更新代码

进口

public class Login extends Activity {
    Button bLogin;
    EditText teUsername, tePassword;
    CheckBox chbRememberPass;

    HttpClient httpclient;
    HttpResponse response;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        initialiseVars();
        httpclient = new DefaultHttpClient();

        bLogin.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                checkLoginDetails();
                test0();
            }
        });
    }

    private void initialiseVars() {
        bLogin = (Button) findViewById(R.id.bLogin);
        teUsername = (EditText) findViewById(R.id.etUsername);
        tePassword = (EditText) findViewById(R.id.etPassword);
        chbRememberPass = (CheckBox) findViewById(R.id.chkRememberPass);
    }

    private void checkLoginDetails() {


        HttpPost httppost = new HttpPost(
                "mywebsite/login.php");
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);
        nameValuePairs.add(new BasicNameValuePair("username", "admin"));
        nameValuePairs.add(new BasicNameValuePair("password", "pass"));

        try {
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            Log.d("myapp", "works till here. 2");
            try {
                ResponseHandler<String> responseHandler = new BasicResponseHandler();
                String responseBody = httpclient.execute(httppost, responseHandler);

                    Log.d("firstCon",responseBody);

            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

    }

    private void test0() {

        HttpGet httppost = new HttpGet(
                "https://mywebsite/userSettings.php");

        try {
            response = httpclient.execute(httppost);
            //String responseBody = EntityUtils.toString(response.getEntity());         
            try {
                Log.d("secondCon", test());

            } catch (Exception e) {
                // TODO Auto-generated catch block
                Log.d("seconderror", e.toString());
            }


        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    }

}
公共类登录扩展活动{
按钮博客;
编辑文本teUsername,tePassword;
复选框chbRememberPass;
HttpClient-HttpClient;
HttpResponse响应;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
initialiseVars();
httpclient=新的DefaultHttpClient();
bLogin.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
checkLoginDetails();
test0();
}
});
}
私有void initialiseVars(){
bLogin=(按钮)findviewbyd(R.id.bLogin);
teUsername=(EditText)findViewById(R.id.etUsername);
tePassword=(EditText)findViewById(R.id.etPassword);
chbRememberPass=(复选框)findViewById(R.id.chkremberpass);
}
私有void checkLoginDetails(){
HttpPost HttpPost=新的HttpPost(
“mywebsite/login.php”);
//添加您的数据
List nameValuePairs=新的ArrayList(5);
添加(新的BasicNameValuePair(“用户名”、“管理员”);
添加(新的BasicNameValuePair(“密码”、“通行证”);
试一试{
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
Log.d(“myapp”,“工作到这里2”);
试一试{
ResponseHandler ResponseHandler=新BasicResponseHandler();
字符串responseBody=httpclient.execute(httppost,responseHandler);
Log.d(“firstCon”,响应库);
}捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}捕获(不支持的编码异常e){
e、 printStackTrace();
}
}
私有void test0(){
HttpGet httppost=新的HttpGet(
"https://mywebsite/userSettings.php");
试一试{
response=httpclient.execute(httppost);
//String ResponseBy=EntityUtils.toString(response.getEntity());
试一试{
Log.d(“secondCon”,test());
}捕获(例外e){
//TODO自动生成的捕捉块
Log.d(“seconderror”,例如toString());
}
}捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
}

不要创建新的
DefaultHttpClient
,而是重新使用它。您的Cookie存储在
DefaultHttpCilent
中,因此如果您继续重用同一实例,您的Cookie将自动为您处理。

我在类中全局声明了httpclient,但现在当我第二次尝试使用它时,它表示第一个方法正在使用它。当我执行httpclient.getConnectionManager().shutdown()时,第二个方法抛出错误,并指出管理器已关闭。如何在一次调用后实现它并将其交给另一个方法?@user521180:步骤#1:在活动的
onCreate()
中创建
DefaultHttpClient
。步骤2:在活动的
ondestory()
中调用
getConnectionManager().shutdown()
。步骤#3:如果您计划在多个线程中同时使用此功能,请附加一个
ThreadSafeClientConnectionManager
,如中所述。第四步:根据需要使用
DefaultHttpClient
。我已经用全班的代码更新了原始问题。您能告诉我如何做,以便
test0()
可以按如下方式检索数据吗well@user521180:您已经编写了代码“以便test0()也可以检索数据”。但是当
test0()
尝试检索
userSettings.php
时,登录页面会出现问题,即使他第一次成功登录函数。因此,我需要保留会话或cookie,以便
test0()
可以使用它。这就是我的问题所在