从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的更多相关文章

  1. Android总结之WebView与Javascript交互[转]

    Android总结之WebView与Javascript交互   前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App.We ...

  2. Android中webView和网页的交互

     Android中webView和网页的交互 Android中webView跟网页的交互式通过JavaScript进行的.具体步骤: 1.创建JavaScript,在点击的时候调用JavaScript ...

  3. Android调用系统相册和拍照的Demo

    最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有问题,没有一个完整的.确实是,我记得一个月前,我一同学也遇到了这样的问题,在低版本的系统中没问题 ...

  4. --@angularJS--指令与指令之间的交互demo

    1.index.html: <!DOCTYPE HTML><html ng-app="app"><head>    <title>c ...

  5. 大叔也说Xamarin~Android篇~为HttpClient共享Session,android与api的session共享机制

    回到目录 杂谈 在进行android进行开发时,我们的数据一般通过接口来获收,这里指的接口泛指web api,webservice,wcf,web应用程序等:它们做为服务端与数据库进行直接通讯,而AP ...

  6. Android 后台发送邮件 (收集应用异常信息+Demo代码)

    上一次说了如何收集我们已经发布的应用程序的错误信息,方便我们调试完善程序.上次说的收集方法主要是把收集的信息通过Http的post请求把相关的异常信息变成请求参数发送到服务器.这个对做过web开发的人 ...

  7. Android 内嵌 HTML5 并进行交互

    Android与HTML5的交互主要是两个部分, 与HTML5的交互以及与JavaScript的交互, 与HTML5的交互可以通过注册onclick事件转化为与JavaScript的交互 Androi ...

  8. Android通过Web与后台数据库交互

    2021.1.27 更新 已更新新版本博客,更新内容与原文章相比有点多,因此新开了一篇博客,请戳这里. 1 背景 开发一个App与后台数据库交互,基于MySQL+原生JDBC+Tomcat,没有使用D ...

  9. Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决

    前提: 1.安装Android Studio(过程略) 2.官网下载OpenCV for Android 网址:http:opencv.org/downloads.html 我下载的是下图的版本 3. ...

随机推荐

  1. XSSFWorkbook实现导出excel

    1.pom.xml中加入poi依赖: <!-- poi -->        <dependency>            <groupId>org.apache ...

  2. “全栈2019”Java第八十四章:接口中嵌套接口详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  3. Linux环境下动态链接库的生成和使用

    使用自己封装的so时遇到了点问题,本着简便原则决定写个demo看看,顺便记录下整个过程. 1)生成so所需的文件如下: print.h #ifndef __print_h__ #define __pr ...

  4. 面向对象中的__slots__

    类中的__slots__ 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性. 而要限制class的属性就需要用到__sl ...

  5. es去重查询

    {     "query": {                 "bool": {                     "must": ...

  6. Ant demo

    <?xml version="1.0" encoding="UTF-8"?> <!-- 定义一个工程,默认任务为warFile. --> ...

  7. 【算法笔记】B1049 数列的片段和

    1049 数列的片段和 (20 分)   给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段.例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, ...

  8. CDQZ Day4

    NOIP 模拟题By liu_runda题目名称 数 论 题源程序文件名 number.cpp theory.cpp problem.cpp输入文件名 number.in theory.in prob ...

  9. Java 的 List 与 Scala 的 Seq 相互转换

    1. List 转 Seq: List<String> tmpList = new ArrayList<>(); tmpList.add("abc"); S ...

  10. Q767 重构字符串

    给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同. 若可行,输出任意可行的结果.若不可行,返回空字符串. 示例 1: 输入: S = "aab" 输出: &qu ...