[Android] interactive demo with PHP sessions, androidsession
Jump from MainActivity to MailIndexActivity. The first request interface sets the session, and the second activity requests the interface to get the session
Get the Set-Cookie in the header in java code
When a request is sent, set the header information Cookie, which is equivalent to obtaining the session from the browser.
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); se TContentView (R. layout. activity_main); // obtain the View object loginBtn = (Button) findViewById (R. id. loginBtn); loginUserName = (TextView) findViewById (R. id. loginUsername); loginPassword = (TextView) findViewById (R. id. loginPassword); // set the Click Event loginBtn for the View object. setOnClickListener (new OnClickListener () {@ Override public void onClick (View arg0) {// enable the new Thread loginThread = new Thread (new LoginRunable (); loginThread. star T () ;}}); loginHandler = new LoginHandler () ;}// implement the Runable interface to enable the new Thread 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 that transmits messages. 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 file:
<? Phpsession_start (); if (empty ($ _ SESSION) {echo "set session"; $ _ SESSION ['name'] = 1; echo session_id ();} else {echo "Get session"; print_r ($ _ SESSION );}