アクティブなDefaultHttpClient
接続を使用して、サーバー側で各モバイル要求に対して検証を行うことができます$_SESSION
。ここに小さなサンプルコードがあります(本番用ではありません)
最初にクラスがあります:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
public class NetClient {
private HttpClient client = null;
public NetClient() {
client = new DefaultHttpClient();
}
public String request(String url) throws ClientProtocolException, IOException {
HttpPost post = new HttpPost(url);
HttpResponse res = client.execute(post);
BufferedReader br = new BufferedReader(new InputStreamReader(res.getEntity().getContent()));
String data = "";
String line = "";
while ((line = br.readLine()) != null) {
data = data + line;
}
return data;
}
public String login(String url) throws ClientProtocolException, IOException {
HttpPost post = new HttpPost(url);
ArrayList pa = new ArrayList();
pa.add( new BasicNameValuePair( "username", "admin"));
pa.add( new BasicNameValuePair( "password", "admin"));
post.setEntity( new UrlEncodedFormEntity(pa, "UTF-8"));
HttpResponse res = client.execute(post);
BufferedReader br = new BufferedReader(new InputStreamReader(res.getEntity().getContent()));
String data = "";
String line = "";
while ((line = br.readLine()) != null) {
data = data + line;
}
return data;
}
}
次にmainactivity.javaで
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try {
NetClient n = new NetClient();
String k = n.login("http://x.com/testAREA/securetrans/login.php");
Log.w("login result", k);
String l = n.request("http://x.com/testAREA/securetrans/content.php");
Log.w("ask if logged in", l);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
login.phpの場所
<?php
session_start();
if(isset($_POST['username']))
{
$username = $_POST['username'];
$password = $_POST['password'];
if($username == 'admin' && $password == 'admin')
{
$_SESSION['username'] = $username;
echo "admin setted";
exit;
}
else
{
echo "-1";
}
}
?>
およびcontent.phpとして:
<?php
session_start();
if(isset($_SESSION['username']))
{
echo "login ok";
}
else
{
echo "not login";
}
?>
このサンプル コードを実行すると、次のコードで終了します。
echo "login ok";
詳細: http://www.pipiscrew.com/2014/11/phpandroid-secure-connection-with-session-variable/