游戏技术文章

[android] 与PHP的session进行交互demo

时间:2017-2-15 11:37:13  作者:棋牌资源网  来源:棋牌资源网  查看:7708  评论:0
内容摘要:从MainActivity跳转到MailIndexActivity,第一个请求接口设置session,第二个activity请求接口获取sessionjava代码中获取header头里面的Set-Cookie请求的时候,设置头信息Cookie,就可以相当于浏览器获取session...
从MainActivity跳转到MailIndexActivity,第一个请求接口设置session,第二个activity请求接口获取session

java代码中获取header头里面的Set-Cookie

请求的时候,设置头信息Cookie,就可以相当于浏览器获取session

 

MainActivity.java

 
package com.tsh.test;

import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    public Button loginBtn;
    public TextView loginUserName;
    public TextView loginPassword;
    public static String API="http://mail.sina.net/test.php";
    public LoginHandler loginHandler;
    public String sessionIdString;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取View对象
        loginBtn=(Button) findViewById(R.id.loginBtn);
        loginUserName=(TextView) findViewById(R.id.loginUsername);
        loginPassword=(TextView) findViewById(R.id.loginPassword);
        //给View对象设置点击事件
        loginBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                //开启新线程
                Thread loginThread=new Thread(new LoginRunable());
                loginThread.start();
            }
        });
        loginHandler=new LoginHandler();
    }
    //实现Runable接口,开启新线程
    class LoginRunable implements Runnable{
        @Override
        public void run() {
            try {
                URL url=new URL(API);
                HttpURLConnection http=(HttpURLConnection) url.openConnection();
                http.setRequestMethod("POST");
                http.setDoInput(true);
                http.setDoOutput(true);
                
                OutputStream ops=http.getOutputStream();
                PrintWriter pw=new PrintWriter(ops);
                String username=loginUserName.getText().toString();
                String password=loginPassword.getText().toString();
                pw.write("email="+username+"&psw="+password+"&loginfrom=app&output=json");
                pw.flush();
                
                String responseCookie = http.getHeaderField("Set-Cookie");
                if (responseCookie != null) {
                   sessionIdString = responseCookie.substring(0, responseCookie.indexOf(";"));
                }
                
                InputStream ins=http.getInputStream();
                byte[] buffer = new byte[1024];
                int length=0;
                StringBuilder sb=new StringBuilder();
                while((length=ins.read(buffer))!=-1){
                    sb.append(new String(buffer,0,length));
                }
                
                Message msg=new Message();
                msg.what=1;
                msg.obj=sb.toString();
                loginHandler.sendMessage(msg);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
    }
    //传递消息的handle
    class LoginHandler extends Handler{
        @Override
        public void handleMessage(Message msg) {
            String loginResponse=(String) msg.obj;
            System.out.println(loginResponse);
            Toast.makeText(MainActivity.this, loginResponse, 10).show();
            Intent intent=new Intent(MainActivity.this, MailIndexActivity.class);
            intent.putExtra("PHPSESSIONID",sessionIdString);  
            startActivity(intent);
        }
    }
}
 

MailIndexActivity.java

 
package com.tsh.test;

import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;

public class MailIndexActivity extends Activity {
    public static String API="http://mail.sina.net/test.php";
    public Handler sessionHandler;
    public String sessionIdString;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        Intent intent = getIntent();  
        sessionIdString= intent.getStringExtra("PHPSESSIONID"); 
        
        setContentView(R.layout.mail_index);
        sessionHandler=new SessionHandler();
        Thread sessionThread=new Thread(new SessionRunable());
        sessionThread.start();
        
        
    }
    class SessionRunable implements Runnable{

        @Override
        public void run() {
            URL url;
            try {
                url = new URL(API);
                HttpURLConnection http=(HttpURLConnection) url.openConnection();
                http.setRequestProperty("Cookie", sessionIdString);
                InputStream ins=http.getInputStream();
                byte[] buffer = new byte[1024];
                int length=0;
                StringBuilder sb=new StringBuilder();
                while((length=ins.read(buffer))!=-1){
                    sb.append(new String(buffer,0,length));
                }
                
                Message msg=new Message();
                msg.what=1;
                msg.obj=sb.toString();
                sessionHandler.sendMessage(msg);
            } catch (Exception e) {
                e.printStackTrace();
            }
            
        }
    }
    class SessionHandler extends Handler{
        @Override
        public void handleMessage(Message msg) {
            String str=(String) msg.obj;
            System.out.println("222");
            System.out.println(str);
            Toast.makeText(MailIndexActivity.this, str, 10).show();
        }
    }
}
 

PHP文件:

 
<?php
session_start();
if(empty($_SESSION)){
   echo "设置session";
   $_SESSION['name']=1; 
   echo session_id();
}else{
   echo "获取session";
   print_r($_SESSION); 
}
 

标签:android与PHP的session进行交互demo 

欢迎加入VIP,【VIP售价:只要288元永久VIP会员】畅享商业棋牌游戏程序下载,点击开通!

下载说明


☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,运营!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,

☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!

☉唯一站长QQ:1004003180  [人格担保-本站注重诚信!]

☉购买建议E-mail:1004003180@qq.com   源码收购 E-mail:1004003180@qq.com    

☉本站文件解压密码  【文章内都自带解压密码,每个密码不同!】


本站提供的所有源码,均来源站长提供,仅学习交流 浙ICP备09009969号

由此产生不良后果和法律责任与本站无关,如果侵犯了您的版权,请来信告知 1004003180@qq.com 将及时更正和删除! 

Copyright © 2008-2022 棋牌资源网,你身边的棋牌资源下载站    All Rights Reserved