Android客户端向服务器端发送数据的流程(1)

原理:

android客户端通过使用org.apache.http.impl.client.DefaultHttpClient类来发送数据;

方法介绍:

HttpClient是android中提供的一个类 , 也是apache开源组织提供的项目 , 他是个简单的HTTP客户端, 而不是一个浏览器 , 可以用于发送HTTP请求,接受http响应.但是不会缓存服务器的响应,不能执行html中in个内嵌的JS代码,也不会对页面的额内容进行任何的解析和处理;

这句话的意思就是:如果你请求的页面内容是:

<HTML>

<BODY>

<br/>

</BODY>

</HTML>的话 , 他是

一个请求的发送大致可以分为:

step1  创建HttpClient对象 详情请看代码中标识的1.1-   1.2   1.3 

step2  创建POST请求的对象---HttpPost

step3  为HttpPost对象中放入参数--setParams(HttpParams ) 或者是setEntity(HttpEntity)

step4  通过HttpClient.exec(HttpPost)方法会返回一个HttpResponse对象 ; 这个对象中提供有获取服务器的响应头,获取服务器的响应内容等等

------------------>>>

Demo:

 

 1 package com.creazy.demohttpclient;
 2 
 3 import android.app.Activity;
 4 import android.app.AlertDialog;
 5 import android.content.DialogInterface;
 6 import android.os.Looper;
 7 import android.support.v7.app.AppCompatActivity;
 8 import android.os.Bundle;
 9 import android.view.Menu;
10 import android.view.MenuItem;
11 import android.view.View;
12 import android.widget.Button;
13 import android.widget.EditText;
14 import android.widget.TextView;
15 import android.widget.Toast;
16 
17 import org.apache.http.HttpResponse;
18 import org.apache.http.NameValuePair;
19 import org.apache.http.client.HttpClient;
20 import org.apache.http.client.entity.UrlEncodedFormEntity;
21 import org.apache.http.client.methods.HttpPost;
22 import org.apache.http.impl.client.DefaultHttpClient;
23 import org.apache.http.message.BasicNameValuePair;
24 import org.apache.http.protocol.HTTP;
25 import org.apache.http.util.EntityUtils;
26 
27 import java.io.IOException;
28 import java.io.UnsupportedEncodingException;
29 import java.util.ArrayList;
30 import java.util.List;
31 
32 public class MainActivity extends Activity
33 {
34 
35     private Button btn_login;
36     private Button btn_reg;
37 
38     private HttpClient httpClient //init ...初始化成员变量<1.2>
39         this.btn_login = (Button)findViewById(R.id.login);
40         this.btn_reg = (Button)findViewById(R.id.regiser);
41        
42         this.httpClient = new DefaultHttpClient() //load login View
43         final View loginDialog = getLayoutInflater().inflate(R.layout.login_layout , null );
44         AlertDialog.Builder bud = new AlertDialog.Builder(MainActivity.this);
45         bud.setTitle("login");
46         bud.setView(loginDialog);
47         bud.setPositiveButton("ok", new DialogInterface.OnClickListener() {
48             @Override
49             public void onClick(DialogInterface dialogInterface, int i) {
50                 //get user info
51                 final String name = ((EditText) loginDialog.findViewById(R.id.user)).getText().toString();
52                 final String pass = ((EditText) loginDialog.findViewById(R.id.passed)).getText().toString();
53 
54 
55                 new Thread() {
56                     @Override
57                     public void run() {
58                         super.run();
59                         String url = "http://192.168.1.101:8080/DemoLogin/LoginServlet";
60                         Step2,这个对象中含有请求的URL 
61                                                 params.add(new BasicNameValuePair("pass", pass));
62 
63                         try {
64                             //设置请求参数
65                             Step3.( response.getEntity        bud.show();
66 
67 
68 
69     }
70 
71 
72     public void  showRegister(View v)
73     {
74       /**
75 注册页面的代码省略
76 **/
77 
78     }
79 }

 

 
====================================================================================
 
如图: 这是在浏览器中访问的数据结果:
android 客户端:

不输入任何用户信息
 

 

=============================>此时 发现android中的Toast显示的数据 和反问浏览器时的数据一致  说明:  我们这条道路走通了

 
posted @ 2015-07-23 14:50  修雨轩陈  阅读(2134)  评论(0编辑  收藏  举报