[android] 与PHP的session进行交互demo详解手机开发

从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);  
}

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/5367.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论