zoukankan      html  css  js  c++  java
  • 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显示的数据 和反问浏览器时的数据一致  说明:  我们这条道路走通了

     
  • 相关阅读:
    cnpm 下载
    WebSocket协议 8 问
    ECMAScript6笔记
    js-scroll判断页面是向上滚动还是向下滚动
    JS高级. 06 缓存、分析解决递归斐波那契数列、jQuery缓存、沙箱、函数的四种调用方式、call和apply修改函数调用方法
    JS高级. 05 词法作用域、变量名提升、作用域链、闭包
    JS高级. 04 增删改查面向对象版歌曲管理、递归、
    JS高级. 03 混入式继承/原型继承/经典继承、拓展内置对象、原型链、创建函数的方式、arguments、eval、静态成员、实例成员、instanceof/是否在同一个原型链
    【Semantic Segmentation】U-Net: Convolutional Networks for Biomedical Image Segmentation 论文解析(转)
    【Semantic segmentation Overview】一文概览主要语义分割网络(转)
  • 原文地址:https://www.cnblogs.com/greentomlee/p/4670484.html
Copyright © 2011-2022 走看看