HttpClient详解

HttpClient执行Get和Post请求

  1. Get
/**
    * 采用httpclient的方式 用get提交数据到服务器
    */
   public void loginByClientGet(View view) {
       String password = et_password.getText().toString().trim();
       String name = et_username.getText().toString().trim();
       if (TextUtils.isEmpty(name) || TextUtils.isEmpty(password)) {
           Toast.makeText(this, "用户名密码不能为空", 1).show();
           return;
       }
       // 1.打开浏览器
       HttpClient client = new DefaultHttpClient();
       // 2.输入浏览器的地址
       String uri = "http://192.168.1.100:8080/web/LoginServlet?" + "name="
               + URLEncoder.encode(name) + "&password="
               + URLEncoder.encode(password);
       HttpGet httpGet = new HttpGet(uri);
       // 3.敲回车.
       try {
           HttpResponse response = client.execute(httpGet);
           int code = response.getStatusLine().getStatusCode();
           if (code == 200) {
               InputStream is = response.getEntity().getContent();
               String result = StreamTools.readFromStream(is);
               Toast.makeText(this, result, 1).show();
           } else {
               Toast.makeText(this, "服务器异常", 1).show();
           }
       } catch (Exception e) {
           e.printStackTrace();
           Toast.makeText(this, "访问网络异常", 1).show();
       }
   }

2. Post

/**
 * 采用httpclient post数据到服务器
 */
public void loginByClientPost(View view) {
    String password = et_password.getText().toString().trim();
    String name = et_username.getText().toString().trim();
    if (TextUtils.isEmpty(name) || TextUtils.isEmpty(password)) {
        Toast.makeText(this, "用户名密码不能为空", 1).show();
        return;
    }
    try {
        // 1.创建一个浏览器
        HttpClient client = new DefaultHttpClient();
        // 2.准备一个连接
        HttpPost post = new HttpPost(
                "http://192.168.1.100:8080/web/LoginServlet");
        // 要向服务器提交的数据实体
        List<NameValuePair> parameters = new ArrayList<NameValuePair>();
        parameters.add(new BasicNameValuePair("name", name));
        parameters.add(new BasicNameValuePair("password", password));
        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters,
                "utf-8");
        post.setEntity(entity);
        // 3.敲回车
        HttpResponse response = client.execute(post);
        int code = response.getStatusLine().getStatusCode();
        if (code == 200) {
            InputStream is = response.getEntity().getContent();
            String result = StreamTools.readFromStream(is);
            Toast.makeText(this, result, 1).show();
        } else {
            Toast.makeText(this, "服务器异常", 1).show();
        }
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(this, "client post 失败", 1).show();
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android干货园

Retrofit--记使用Retrofit时遇到的一个坑

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/52...

1041
来自专栏小巫技术博客

App更新策略课程-检查更新实现

1394
来自专栏潇涧技术专栏

Android Dependency Injection Libraries

本文总结并对比了三种Android依赖注入库:Butter Knife、RoboGuice、Android Annotations的使用

891
来自专栏向治洪

qq平台登录

在APP开发过程中,时常会用到第三方账号登录体系。 下面,简要说明QQ的第三方登录体系在Android平台上的运用。 申请APPID 进入QQ互联的官网...

31010
来自专栏移动开发

Glide 如何实现正确加载图片而没有错位

当我们在常见的列表界面中(如 recycleview 实现的列表),使用上面的代码,在我们快速滑动中,glide 是如何实现正确加载图片,而没有导致图片内容的错...

2933
来自专栏GIS讲堂

安卓中的数据存取

在我们每天使用的手机设备中,无时无刻都在进行着数据的存和取。安卓作为一种手机操作系统,提供了如下方式的数据存取方式:Preference,File,Sqlite...

1272
来自专栏7号代码

Android应用界面开发——Fragment(实现图书详情界面)

Fragment代表了Activity的子模块,因此可以把Fragment理解成Activity片段。

3382
来自专栏刘望舒

RxBinding使用和源码解析

作者 | juexingzhe 地址 | https://www.jianshu.com/u/ea71bb3770b4 声明 | 本文是 juexingzhe...

45010
来自专栏一个会写诗的程序员的博客

第14章 使用Kotlin 进行 Android 开发(2)

我们使用 fastjson 来解析这个数据。在 app 下面的 build.gradle中添加依赖

982
来自专栏刘望舒

LayoutInflater 布局渲染工具原理分析

LayoutInflater其实是一个布局渲染工具,其本质就只是一个工具,说白了LayoutInflater的作用就是根据xml布局文件构建View树,自定义...

1979

扫码关注云+社区

领取腾讯云代金券