当前位置: 首页>移动开发>正文

android 创建服务aidl android服务端开发教程

提到 HttpClient,实际上使用过java开发的网友应该不陌生。它是Apache开源组织的一个项目。简单点说,HttpClient就是一个增强版 的HttpURLConnection,HttpURLConnection可以做的事情HttpClient全部可以 做;HttpURLConnection没有提供的有些功能,HttpClient也能提供,它更多的是关注如何发送请求,接收请收,以及响应管理 HttpClient。
        下面,阿堂以访问一个被保护资源的页面来说明在Android中HttpClient中使用。
demo案例描述
        下面Android应用需要向指定页面发送请求,但该页面并不是一个简单的页面,只有当用户已经登录,而且用户名是heyitang时,才可以访问该页面。如 果使用HttpURLConnection来访问该页面,那么需要处理的细节就太复杂了。为了通过HttpClient来访问被保护页面,程序同样需要使 用HttpClient来登录系统,只要应用程序使用同一个HttpClient发送请求,HttpClient会自动维护与服务器之间的Session 状态,也就是说程序第一次使用HttpClient登录系统后,接下来使用HttpClient即可访问被保护页面了。(如果访问web应用中被保护的页面,使用浏览器则十分简单,用户通过系统提供的登录页面登录系统,浏览器会负责维护与服务器之间的Session,如果用户登录的用户名,密码正确,就可以访问被保护的资源了)

Android客户代调用代码

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class HttpClientTest extends Activity
{
    Button get;
    Button login;
    EditText response;
    HttpClient httpClient;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // 创建DefaultHttpClient对象
        httpClient = new DefaultHttpClient();
        get = (Button) findViewById(R.id.get);
        login = (Button) findViewById(R.id.login);
        response = (EditText) findViewById(R.id.response);
        get.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                // 创建一个HttpGet对象
                HttpGet get = new HttpGet(
                    "http://192.168.6.100:8080/foo/secret.jsp");
                try
                {
                    // 发送GET请求
                    HttpResponse httpResponse = httpClient.execute(get);
                    HttpEntity entity = httpResponse.getEntity();
                    if (entity != null)
                    {
                        // 读取服务器响应
                        BufferedReader br = new BufferedReader(
                            new InputStreamReader(entity.getContent()));
                        String line = null;
                        response.setText("");
                        while ((line = br.readLine()) != null)
                        {
                            // 使用response文本框显示服务器响应
                            response.append(line + "\n");
                        }
                    }
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        });
        login.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                final View loginDialog = getLayoutInflater().inflate(
                    R.layout.login, null); //显示的弹出登录界面的界面文件
                new AlertDialog.Builder(HttpClientTest.this)
                    .setTitle("登录系统")
                    .setView(loginDialog)
                    .setPositiveButton("登录",
                        new DialogInterface.OnClickListener()
                        {
                            @Override
                            public void onClick(DialogInterface dialog,
                                int which)
                            {
                                String name = ((EditText) loginDialog
                                    .findViewById(R.id.name)).getText()
                                    .toString();
                                String pass = ((EditText) loginDialog
                                    .findViewById(R.id.pass)).getText()
                                    .toString();
                                HttpPost post = new HttpPost(
                                    "http://192.168.6.100:8080/foo/login.jsp");
                                // 如果传递参数个数比较多的话可以对传递的参数进行封装
                                List params = new ArrayList();
                                params
                                    .add(new BasicNameValuePair("name", name));
                                params
                                    .add(new BasicNameValuePair("pass", pass));
                                try
                                {
                                    // 设置请求参数
                                    post.setEntity(new UrlEncodedFormEntity(
                                        params, HTTP.UTF_8));
                                    // 发送POST请求
                                    HttpResponse response = httpClient
                                        .execute(post);
                                    // 如果服务器成功地返回响应
                                    if (response.getStatusLine()
                                        .getStatusCode() == 200)
                                    {
                                        String msg = EntityUtils
                                            .toString(response.getEntity());
                                        // 提示登录成功
                                        Toast.makeText(HttpClientTest.this,
                                            msg, 5000).show();
                                    }
                                }
                                catch (Exception e)
                                {
                                    e.printStackTrace();
                                }
                            }
                        }).setNegativeButton("取消", null).show();
            }
        });
    }
}

Java服务端代码
secret.jsp

<%
Object user = session.getAttribute("user");
if(user != null && user.toString().trim().equals("heyitang"))
{
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title> 安全资源 </title>
    <meta name="website" content="http://www.crazyit.org"/>
</head>
<body>
    安全资源,只有登录用户<br/>
    且用户名是heyitang才可访问该资源
</body>
</html>
<%}
else
{
    out.println("您没有被授权访问该页面");   
}%>

login.jsp

<%
String name = request.getParameter("name");
String pass = request.getParameter("pass");
if (name.equals("heyitang")
    && pass.equals("123456"))
{
    session.setAttribute("user" , name);
    out.println("恭喜您,登录成功!");
}
else
{
    out.println("对不起,用户名、密码不符合!");
}
%>


https://www.xamrdz.com/mobile/4q71964514.html

相关文章: