网络篇——android中的Http(二)HttpGet与HttpPost

本人水平有限,文章中如果出现什么不正确或者模糊的地方,还请各位小伙伴留下评论,多多指教 : )

概述

*android与服务器之间的交互,有两种方式,一种为POST,一种为GET。

*GET方式通过URL传递参数,例如:
http://192.168.1.147/register.php?name=123&pwd=123

*POST方式通过封装数据实体进行交互

关于POST与GET之间区别

1.POST与GET都可以像服务器发送请求,但是GET是通过URL传递参数的,所以像name和password这种涉及用户信息的参数,使用GET进行传递是不安全的。而POST是将数据进行封装,然后再传输。所以,一般来说GET适用于从服务器获取数据,而POST适合向服务器发送数据。
2.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
3. 对于get方式,服务器若使用的是PHP,则通过$_GET[]获取变量的值,对于post方式,服务器端用$_POST[]获取提交的数据。$_GET和$_POST可以理解为数组,每一个传递过来的参数都会存在相应的数组当中。$_POST$_GET存储的变量,全部都会存储在$_REQUEST队列当中。
4. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。

POST与GET的使用建议

综上,在使用POST和GET时的建议为:
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

栗子 数据发送

准备工作

wampServer

在正式开始编写这个例子之前,我们需要将本地的电脑作为服务器使用,这里推荐使用wamppServer或者xampp这种集成化的开发环境,其中包含了Apache及mysql等服务端开发的常用组建,非常方便。

我这里使用的是wampServer,大家自行去下载就好了。

这里写图片描述

下载完毕后,双击图标运行,在桌面的右下角会出现一个wampServer的icon。
要想测试自己的本地服务端是否配置成功,只需在浏览器里输入http://127.0.0.1http://localhost/)或者本机的IP地址。上述不论那种方法,最后都会显示相同的页面。

这里写图片描述

这里解释说明一下两种访问wampServer的方式。通过127.0.0.1(localhost)的方式,是通过本地回环地址地址去访问的,后者(本机IP)是在网络中去访问这台主机。
在正式开发过程当中,android端的url需要使用第二种写法。

然后左键单击icon,会弹出一个菜单,然后点击www目录,此目录,我们把需要的服务端脚本文件(PHP、Python、java等语言编写的文件)放在此目录里就可以了

这里我们做一个简单的测试。创建一个hello.txt文件,里面的代码如下:

<?php
echo 'hello php';

简单地输出一句话,把.txt的后缀改为.php,即hello.php,然后在浏览器里面去打开这个文件,在浏览器里输入如下的url:

http://localhost/hello.php

此时显示的页面为:

这里写图片描述

至此wampServer的安装完毕。当然在安装过程中可能还会遇到其他问题,最常见的可能就是wampServer当中的Apache使用的端口号与虚拟机使用的端口号冲突,解决办法各位小伙伴自行百度吧,不是难的问题。

服务端脚本文件

所谓服务端的脚本文件,即用来处理用户发送请求,与服务器进行交互,并将服务器的数据反馈给用户的一类文件。脚本文件只是一个广泛的概念,能够作为服务器脚本的编程语言由很多种,比如PHP,Python,Java Web等,这里我使用的是PHP。

推荐一款PHP的编辑器Zend Studio,当然喜欢轻量级编辑器的小伙伴可以去用用sublime

接下来就是处理adnroid客户端发送来数据的PHP文件,代码如下

getInfo.php

<?PHP
if(isset($_REQUEST['name'])&&isset($_REQUEST['age'])){
$name=$_REQUEST['name'];
$age=$_REQUEST['age'];
echo $name.'|'.$age;
}

这是一段比较简单的PHP代码,首先判断Request队列中是否有name和age的字段,如果有,对其赋值,然后将name和age的值打印出来。有PHP基础的小伙伴看这段代码应该是非常轻松的。
然后我们通过Url的方式传递参数进去。在浏览器里输入:

http://localhost/getInfo.php?name=213&age=11
显示的页面为:

这里写图片描述

可以看到浏览器接收到了通过url GET的参数name和age,并且显示在了页面上
至此我们的服务器端就已经配置好了。

android 客户端编写

通过GET方式向服务器发送数据

描述:android作为客户端通过HttpUrlConnection,设置请求方式为GET,然后发送信息给服务器,服务器接收到消息后返回特定信息给android客户端并显示。

我们上节的HTTP讲解当中使用的是HttpUrlConnection进行HTTP通信的,现在我们使用一个便捷的框架——Volley。大家可以先去看看这个教程— Android Volley完全解析,在以后使用开发过程当中,肯定会大量用到网络操作。
接下来我们来编写android端的代码

public class MainActivity extends AppCompatActivity {
    private TextView textView;
    private  RequestQueue requestQueue;
    private EditText et_name;
    private EditText et_age;
    private Button bt_send;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.response);
        et_name = (EditText) findViewById(R.id.et_name);
        et_age = (EditText) findViewById(R.id.et_age);
        bt_send = (Button) findViewById(R.id.bt_send);

        //请求队列对象
        requestQueue = Volley.newRequestQueue(this);


        bt_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //get方式的url
                String urlGet="http://192.168.1.222/getInfo.php?name="+et_name.getText().toString()+"&age="+
                        et_age.getText().toString();
                StringRequest request=new StringRequest(urlGet, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        textView.setText(response);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.e("--TAG--", error.getMessage(), error);
                    }
                });

                requestQueue.add(request);
            }

            });
        }
    }

注意上面的urlGet,要把localhost换成本机的ip地址,并且android设备要和你的电脑处于同一局域网当中。

用户输入name和age,发送给getInfo.php,然后脚本文件echo 出来,android端接受
是不是感觉使用了框架之后的网络操作就非常简单了~但是在前期,不建议大家使用框架,因为这样不利于我们去了解android的网络通信机制,在后期网络操作的工作过程能做到轻车熟就时,再使用框架也不迟。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值