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

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在子线程和主线程之间实现联系;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值