android:基于Apache的HttpClient简单使用方法

2023-11-11

1.HttpClient

HttpClient 是Apache Jakarta Common 下的子项目,在android中已经集成了Apache的HttpClient模块,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

2.为什么要使用HttpClient?

相较于HttpURLClient而言,使用HttpClient更加简单,方便开发

3.get方法和post的介绍和区别

3-1:get方法和post方法是基于http协议的访问服务器的最常见的两种方法,通过该方法可以实现对于服务器的访问,同时,可以得到从服务器反馈的数据进行分析

3-2:区别

1.get是从服务器上获取数据,post是向服务器传递数据
2.get是把相应的参数数据队列添加到指定的URL中,参数的值和参数名的各个字段一一对应
并且在URL中可以看见(正因为此,所以安全性很差)
post是通过HTTPpost机制,通过输出流的形式,将请求的参数名和参数值放置在HTML HEADER内一起传输到指定的URL地址,用户看不到过程
 
3.get方式而言,服务器用Request.QueryString获取变量值,对于post方式,服务器端用Request.From方法获取提交的诗句
4.get传输数据的量比较小,不能大于2kb,post方法中传输的数据量较大,一般默认为不受限制,但是理论上而言,IIS4中最大为80kb,IIS5中为100KB
5.get安全性很低,post较高

3-3:如何在HttpClient使用get和post方法

get:1.拼接URL 2.构建客户端实现发送get请求以及指令(同时得到反馈值) 3.通过对应的Util,将返回的实体变为String类型的返回信息

code:

package com.example.httpgetandhttppost;

import android.util.Log;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import java.io.IOException;

public class HTTPGET {
    public void Get(String s) {
        //使用Http内置的功能实现get请求
        String urlAdress = "*******";//访问服务器的网址
        String method = "********";//需要什么方法
        String getUrl = urlAdress + method + "?way=" + s;
        HttpGet httpGet = new HttpGet(getUrl);
        //开始进行http get请求的发送
        try {
            //构建一个默认的客户端进行发送拼接好的htto请求
            HttpResponse response = new DefaultHttpClient().execute(httpGet);
            //服务器反馈的信息
            if (response.getStatusLine().getStatusCode() == 200) {
                String responseDetails = EntityUtils.toString(response.getEntity());//将返回的实体转化为字符串
                Log.d("Msg From Server", responseDetails);
            } else {
                Log.d("Msg From Server", "ERROR");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

post:

package com.example.httpgetandhttppost;

import android.provider.Settings;
import android.util.Log;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
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 java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import javax.xml.namespace.NamespaceContext;

public class HTTPPOST {
    String urlAdress = "*******";//访问服务器的网址
    String method = "********";//需要什么方法
    String getUrl = urlAdress + method ;
    public void post(String s){
        //开始构建前缀
        HttpPost httpPost=new HttpPost(urlAdress+method);
        //构建键值对
        List<NameValuePair>params=new ArrayList<>();
        params.add(new BasicNameValuePair("way",s));//构建键值对成功
        //进行键值对封装
        try {
            httpPost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));//封装参数

            HttpResponse response=new DefaultHttpClient().execute(httpPost);//实现从服务器中获取回复信息
            if(response.getStatusLine().getStatusCode()==200){
                String result=EntityUtils.toString(response.getEntity());//response会返回一个实体,使用适当的工具类将其转化为String
                Log.d("TAG",result);
            }else{
                Log.d("TAG","Failed");
            }

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

注:HttpClient中的get和post请求需要在异步线程中实现,如需要改变ui,需要使用Handler或继承AsyncTask在子线程和主线程之间实现联系;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android:基于Apache的HttpClient简单使用方法 的相关文章

随机推荐

  • 区块链应用开发入门

    区块链技术如今是非常火热 不仅让金融家和创投家趋之若鹜 如今已经在多个领域遍地播种 作为拥有锐利触角的创业家们 是否也想将区块链集成到你们现有的应用中去 而作为IT技术工程师的你 是否也是跃跃欲试 想基于区块链来练一下手 以免日后被新技术淘
  • tcpdump: syntax error 解决-linux 下安装tcpdump 和 libpcap

    关键 linux 如何下载包 wget 下载指定目录 linu 下载文件到指定目录 今天心血来潮突然想在自己的服务上抓某个端口 结果执行tcpdump时报错了 http www tcpdump org index html 找到Latest
  • 基于C语言的分页管理方式下存储分配情况模拟

    1 题目简介 借用外存空闲分区管理中位示图的方法来表示主存分配情况 实现主存空间的分配和回收 要求能显示和打印分配或回收前后的位示图和当前空闲块数 对完成一次分配后还要显示或打印为作业建立的页表 2 所用数据结构 为要分配的作业建立数据结构
  • 时钟抖动(Jitter)和时钟偏斜(Skew)

    在进行时序分析时 经常会遇到两个比较容易混淆的概念 那就是时钟抖动 Clock Jitter 和时钟偏斜 Clock Skew 下面就解释下两者的区别 一 Jitter 由于晶振本身稳定性 电源以及温度变化等原因造成了时钟频率的变化 指的是
  • ipc_perm 详解

    系统为每一个IPC对象保存一个ipc perm结构体 该结构说明了IPC对象的权限和所有者 每一个版本的内核各有不用的ipc perm结构成员 若要查看详细的定义请参阅文件
  • 【二十五】springboot整合jedis和redisson布隆过滤器处理缓存穿透

    springboot篇章整体栏目 一 springboot整合swagger 超详细 二 springboot整合swagger 自定义 超详细 三 springboot整合token 超详细 四 springboot整合mybatis p
  • win10 win11下添加nfs客服端到linux

    在控制面板中找到程序和功能 点击 启动或关闭windows功能 打上这两个 然后确认 在资源管理器中添加linux中的nfs目录 点击如下位置 配置本地驱动器和服务器路径 以上配好后就可以访问linux上的资源了 但只有只读权限 解决办法如
  • SpringCloud分布式开发五大神兽

    SpringCloud分布式开发五大神兽 服务发现 Netflix Eureka 客服端负载均衡 Netflix Ribbon 断路器 Netflix Hystrix 服务网关 Netflix Zuul 分布式配置 Spring Cloud
  • js基础学习第一天(关于DOM和BOM)一

    关于BOM和DOM BOM 下面一幅图很好的说明了BOM和DOM的关系 BOM提供了一些访问窗口对象的一些方法 我们可以用它来移动窗口位置 改变窗口大小 打开新窗口和关闭窗口 弹出对话框 进行导航以及获取客户的一些信息如 浏览器品牌版本 屏
  • pikache靶场通关——XSS漏洞

    文章目录 前言 环境 第一关 反射型xss get Step 1 输入特殊字符测试 Step 2 输入js语句 Step 3 在URL中输入js语句 第二关 反射性xss post Step 1 输入获取cookie的js语句 第三关 存储
  • 终于有人把Java内存模型(JMM)说清楚了

    网上有很多关于Java内存模型的文章 在 深入理解Java虚拟机 和 Java并发编程的艺术 等书中也都有关于这个知识点的介绍 但是 很多人读完之后还是搞不清楚 甚至有的人说自己更懵了 本文 就来整体的介绍一下Java内存模型 目的很简单
  • case when 失效,看了这篇文章就明白了

    前几天 小明在工作中写sql的时候使用到了case when 发现case when是一个工作中比较常用但是又比较绕的函数 今天特意来给大家分享一下case when 的使用的方法 关于case when的使用情况 总结下来有三种 等值转换
  • elasticsearch_script_01

    文章目录 1 script 简述 1 script的类型和作用 2 script使用的方式 2 script的使用场景 1 update scripts 2 search 和agg 中使用script 3 search中获取doc的打分数据
  • python生成的excel无法打开-Python 解决中文写入Excel时抛异常的问题

    近期接到业务部门需求 需将统计结果每日发送到业务部门 在调试python脚本的时候 导出的Excel标题为中文 总是抛出以下异常 Traceback most recent call last File totalpx py line 99
  • 租号玩上号器显示服务器繁忙,租号玩出现错误1003是怎么回事?

    2007 06 20 我还几天前把自己的帐号自己锁了然后我去登陆游戏社区但上面老显示验证码错误我就换个号上但无论我登陆什么号都上不了怎么办最后我新建一个号但建不了了验证码老错误可我明明输入对了啊大小写都试过不知道怎么回事我就等几天以为是系统
  • 期货及衍生品基础 - 概述总结

    期货及衍生品概述 17世纪30年代的 荷兰郁金香 时期 出现了最早的期权交易 1848年 82位商人在芝加哥发起组建了芝加哥期货交易所 CBOT 规范的现代期货市场在19世纪中期产生于美国芝加哥 1865年芝加哥期货交易所开始实行保证金制度
  • 交插二五条码(交叉25码)详解

    交插二五条码 交叉25码 详解 交叉二五码是1972年美国Intermec公司发明的一种条 空均表示信息的连续型 非定长 具有自校验功能的双向条码 它的字符集为数字字符0 9 初期广泛应用于仓储及重工业领域 1981年美国开始将其用于运输包
  • InstallShield 2015 LimitedEdition VS2015打包 覆盖安装

    吾乐吧软件站 提供了很全面详细的InstallShield制作安装包教程 http www wuleba com 23892 html 但是按上面的方法再次制作的升级安装包 安装后会在系统中同时存在两个版本的程序 要么就是提示 已安装了该产
  • Spring Boot

    一 什么是Spring Boot Spring Boot就是一个帮助我们快速搭建和部署Spring项目的框架 boot就是启动 开启的意思 Spring Boot可以理解为Spring项目的开启框架 很多人也叫它Spring脚手架 脚手架图
  • android:基于Apache的HttpClient简单使用方法

    1 HttpClient HttpClient 是Apache Jakarta Common 下的子项目 在android中已经集成了Apache的HttpClient模块 用来提供高效的 最新的 功能丰富的支持 HTTP 协议的客户端编程