使用 HTTP 协议访问网络的两种方式:HttpURLConnection 和 HttpClient

Android网络编程(二)HttpClient与HttpURLConnection 上一篇我们了解了HTTP协议原理,这一篇我们来讲讲Apache的HttpClient和Java的HttpURLConnection,这两种都是我们平常请求网络会用到的。无论我们是自己封装的网络请求类还是第三方的网络请求框架都离不开这两个类库。 阅读详情

安卓中进行基于HTTP协议的网络访问

说明: HttpClient (apache开发)
HttpURLConnection(google在发布安卓时在Java基础上修改得到的)

使用HC(HttpClient)/UC(HttpURLConnection)进行网络访问的基本步骤:
0.申请权限 INTERNET访问权限
1. 任何网络访问的相关代码,必须在工作线程中执行!
2. 创建HC/UC对象
3. 声明发起网络访问的方式(GET/POST)
4. 进行网络连接
5. 获得服务器响应的结果
6. 解析结果,提取需要的内容
7. 解析结果要提交到UI线程进行呈现

  • 利用POST方式发起请求,参数要放到请求实体中,并且在请求头中添加对实体中参数的说明。例如:
添加参数:
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("loginname", user.getName()));
parameters.add(new BasicNameValuePair("password", user.getPassword()));
parameters.add(new BasicNameValuePair("realname", user.getRealname()));
parameters.add(new BasicNameValuePair("email", user.getEmail()));
HttpEntity entity = new UrlEncodedFormEntity(parameters);
post.setEntity(entity);
添加说明:
post.setHeader("Content-Type", "application/x-www-form-urlencoded");
  • 在HttpClient中设置头: post.setHeader(key,value);
  • 在HttpURLConnection中设置头:
    connection.setReqeustProperty(key ,value);

建一个小项目进行说明

1. activity_main.xml 布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.ui.MainActivity" >

    <EditText
        android:id="@+id/et_main_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名..."
        android:textSize="16sp" />

    <EditText
        android:id="@+id/et_main_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:hint="请输入密码..."
        android:inputType="textPassword"
        android:textSize="16sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/et_main_vertifycode"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_weight="3"
            android:hint="请输入验证码..."
            android:textSize="16sp" />

        <ImageView
            android:id="@+id/iv_main_vertifycode"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/ic_launcher" />
    </LinearLayout>

    <View
        android:layout_width="1dp"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="regist"
        android:text="注册"
        android:textSize="16sp" />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="login"
        android:text="登录"
        android:textSize="16sp" />


</LinearLayout>

效果图:
这里写图片描述

2. 建一个MainActivity 类

package com.example.ui;

import com.example.biz.EmsBiz;
import com.example.listener.OnLoginFinishListener;
import com.example.listener.OnRefreshVertifyCodeListener;
import com.example.web.R;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {
    EditText etName,etPwd,etCode;
    EmsBiz biz;
    ImageView ivImageView;
    String sid;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
        biz=new EmsBiz(this);
        initView();//初始化界面
    }
    private void initView() {
        ivImageView=(ImageView) findViewById(R.id.iv_main_vertifycode);
        //验证码的监听器
        ivImageView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                refresh();//每点击一次验证码,就刷新一次
            }
        });
        etName = (EditText) findViewById(R.id.et_main_name);
        etPwd = (EditText) findViewById(R.id.et_main_password);
      etCode = (EditText) findViewById(R.id.et_main_vertifycode);
    }
    @Override
    protected void onResume() {
        super.onResume();
        //验证码的刷新
        refresh();
    }
    protected void refresh() {
       //为refresh()设置回调的getVertify方法
       //接口OnRefreshVertifyCodeListener(),并实现接口方法onRefreshFinished
        biz.getVertify(new OnRefreshVertifyCodeListener() {

            @Override
            public void onRefreshFinished(Bitmap bitmap, String sessionId) {
            if(bitmap!=null){
                ivImageView.setImageBitmap(bitmap);                     
            }
            }
        });
    }
    //“注册”按钮的onClick,跳转到“注册界面”
    public void regist(View v) {        
        Intent intent=new Intent(this,RegistActivity.class);
        startActivity(intent);
    }
    //“登录”按钮的onClick
    public void login(View v) {
        //应该加入判空
        String loginname = etName.getText().toString();
        String password = etPwd.getText().toString();
        String code = etCode.getText().toString();
        //与上面refresh()一样,添加回调监听
        biz.login(loginname,password,code,sid,new OnLoginFinishListener() {

            @Override
            public void OnLoginFinish(String result) {
                if(result!=null){
                    if(result.contains("ok")){
                    //加入Toast提示
                        Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
                        refresh();
                        //如果输入不正确,将验证码和密码清空
                        etPwd.setText("");
                        etCode.setText("");
                    }
                }else{
                    Toast.makeText(MainActivity.this, "服务器错误", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

3. 建一个OnLoginFinishListener 接口

package com.example.listener;
public interface OnLoginFinishListener {
    void OnLoginFinish(String result);
}

4. 建一个EmsBiz 类

这个类属于管理层界面了,对于自己做小项目没有太大意义

package com.example.biz;

import com.example.Utli.EmsUtli;
import com.example.bean.Emp;
import com.example.bean.User;
import com.example.listener.OnAddEmpFinishListener;
import com.example.listener.OnLoginFinishListener;
import com.example.listener.OnRefreshVertifyCodeListener;
import com.example.listener.onRegistFinishListener;

import android.content.Context;
import android.util.Log;

public class EmsBiz {
    private Context context;
    public EmsBiz(Context context) {
        this.context = context;
    }

      //这里使用两种方式:HttpClient和HttpURLConnection       
    public void login(String loginname,String password,
String code,String sid,OnLoginFinishListener listener) {
        //EmsUtli.login(loginname,password,code,sid,listener);
        EmsUtli.login2(loginname,password,code,sid,listener);
    }
}

5. 最后再建一个EmsUtli类

package com.example.Utli;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Looper;

import com.example.bean.Emp;
import com.example.bean.User;
import com.example.bean.ValueObject;
import com.example.listener.OnAddEmpFinishListener;
import com.example.listener.OnLoginFinishListener;
import com.example.listener.OnRefreshVertifyCodeListener;
import com.example.listener.onRegistFinishListener;

public class EmsUtli {
  //使用HttpClient方式
    public static void login(final String loginname, final String password, final String code,final String sid, final OnLoginFinishListener listener) {
        new AsyncTask<Void, Void, String>(){

            @Override
            protected String doInBackground(Void... params) {
                try {
                //HttpClient 是一个接口,因此无法创建它的实例,通常情况下都会创建一个DefaultHttpClient 的实例
                    HttpClient client= new DefaultHttpClient();
                    HttpPost post=new HttpPost("http://172.88.134.136:8080/ems/login.do");
                    //添加一个请求头,对请求实体中的参数做一个说明
                    //在HttpClient中设置头:post.setHeader(key,value);
                    post.setHeader("Cookie",sid);
                    post.setHeader("Content-Type","application/x-www-form-urlencoded");
                    //在post中添加请求参数
                    //请求参数会添加在请求实体中
                    List<NameValuePair>parameters = new ArrayList<NameValuePair>();
                    parameters.add(new BasicNameValuePair("loginname", loginname));
                    parameters.add(new BasicNameValuePair("password", password));
                    parameters.add(new BasicNameValuePair("code", code));
                    HttpEntity entity=new UrlEncodedFormEntity(parameters);
                    post.setEntity(entity);
                    HttpResponse resp=client.execute(post);
                    String result=EntityUtils.toString(resp.getEntity());                   
                    return result;              
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
            protected void onPostExecute(String result) {
                listener.OnLoginFinish(result);
            };

        }.execute();
    }

    //HttpURLConnection进行注册
    public static void login2(final String loginname, final String password, final String code,
            final String sid, final OnLoginFinishListener listener) {
        new Thread(){
            public void run() {
                try {
                    URL url=new URL("http://172.88.134.136:8080/ems/login.do");
                    HttpURLConnection connection=(HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("POST");
                    connection.setDoInput(true);//接收服务器响应的内容
                    connection.setDoOutput(true);//要向服务器提交内容
                    //在请求头中,为请求实体中的内容做说明
                    //在HttpURLConnection中设置头:connection.setReqeustProperty(key ,value);
                    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                    connection.setRequestProperty("Cookie", sid);
                    connection.connect();
                    OutputStream out=connection.getOutputStream();
                    PrintWriter pw=new PrintWriter(out,true);
                    pw.write(getParams(loginname,password,code));
                    pw.close();
                    //从客户端获取服务器的响应的内容
                    InputStream in=connection.getInputStream();
                    BufferedReader br=new BufferedReader(new InputStreamReader(in));
                    //在这里我们只有一行,所以这样写
                    //若为多行数据,需用:
                    /*StringBuilder sb=new StringBuilder();
                    while ((line=br.readLine())!=null) {
                        sb.append(line);
                    }*/
                    final String result=br.readLine();
                    br.close();
                        //在主线程执行
                    new Handler(Looper.getMainLooper()).post(new Runnable() {

                        @Override
                        public void run() {
                            listener.OnLoginFinish(result);
                        }
                    });
                } catch (Exception e) {
                    e.printStackTrace();
                }
            };
        }.start();
    }
   //获得参数的方法
    protected static String getParams(String loginname, String password,
            String code) {
        Map<String, String> map=new HashMap<String,String>();
        map.put("loginname", loginname);
        map.put("password", password);
        map.put("code", code);
        StringBuilder sb=new StringBuilder();
        for(Entry<String, String> entity:map.entrySet()){
            sb.append(entity.getKey()).append("=").
            append(entity.getValue()).append("&");
        }
        //-1是为了减去最后的“&”字符
        return  sb.substring(0, sb.length()-1);
    }

别忘了在AndroidManifest.xml中注册

<uses-permission android:name="android.permission.INTERNET" />

在这里我们选择了HttpURLConnection运行,将HttpClient进行了注释,比较推荐使用HttpURLConnection进行HTTP协议访问网络

Android学习笔记:HttpClient和HttpURLConnection 在Android开发中网络请求是最常用的操作之一,Android SDK中对HTTP(超文本传输协议)也提供了很好的支持,这里包括两种接口: (1)标准Java接口(java.NET)——HttpURLConnection,可以实现简单的基于URL请求、响应功能; (2)Apache接口(org.apache.http)——HttpClient,使用起来更方便更强大; 一、HttpClient H... 阅读详情

相关推荐

UE5 AI寻路全攻略:从Nav Mesh基础到动态障碍与多模式导航

在游戏开发中,AI寻路是赋予非玩家角色自主移动能力的关键技术。其核心原理是通过预计算或实时生成一个表示可行走区域的导航网格,AI路径查找算法(如A*)在此网格上规划最优路径。这项技术的价值在于,它能极大提升游戏世界的真实感和交互性,使NPC能够智能地绕开障碍、穿越复杂地形,广泛应用于开放世界、RPG、策略游戏等多种场景。本文聚焦于虚幻引擎5的寻路系统,深入探讨其寻路网格体配置。针对动态环境挑战,文章详细介绍了如何利用寻路修饰体积和动态障碍物组件实现导航网格的实时更新;同时,针对游泳、飞行等特殊移动需求,解析

weixin_33226816的博客 360

Java 实现 HTTP 请求的四种方式,你都学会了么?

前言在日常工作和学习中,有很多地方都需要发送HTTP请求,本文以Java为例,总结发送HTTP请求的多种方式HTTP请求实现过程GET创建远程连接设置连接方式(get、post、put…)设置连接超时时间设置响应读取时间发起请求获取请求数据关闭连接POST创建远程连接设置连接方式(get、post、put。。。)设置连接超时时间设置响应读取时间当向远程服务器传送数据/写数据时,需要设置为true(...

Java知音 7859

详解STM32F407双重ADC同步采集与DMA传输的配置技巧及实战应用

本文详细解析了STM32F407双重ADC同步采集与DMA传输的配置技巧及实战应用。通过CubeMX配置、代码实现和常见问题解决方案,帮助开发者高效实现多通道数据同步采集,提升工业自动化和嵌入式系统的数据采集效率与精度。

ii567的博客 364

Http的两种请求方式:HttpClient和HttpUrlConnection

在这里记录一下两种Http请求方式,建立个模板方便自己以后学习和使用。 HttpClient 这种请求方式在Android6.0版本直接删除了,这种方式在Android2.2版本之前使用比较合适,2.3版本之后比较适合HttpUrlConnection。下面以POST方式为例 第一步:需要在build.gradle引进类库 android{ useLibrary 'org.apache.htt...

qq_41401062的博客 699

医药领域知识图谱快速及医药问答项目(项目全过程)

该项目是中科院软件所刘焕勇老师在github上的开源项目,基于知识图谱的医药领域问答项目 Github项目地址:mirrors / liuhuanyong / qasystemonmedicalkg · GitCode 一、项目环境搭建 该部分要十分注意,由于版本升级的问题,一些用法及格式已经不兼容了。 python3.8 下载地址:Python Release Python 3.8.10 | Python.orght...

qq_52062182的博客 9916

局部,全局(外部),static等变量详解

首先,必须明白一个程序是包含若干个源文件,每个源文件又是包含若干个函数,每个源文件、函数中又定义了若干个变量。但是每个变量都有自己的作用范围,也就是自己的作用域。只有在作用域内才可以访问变量。 变量的有效范围称为变量的作用域( scope)。归纳起来,变量有4种不同的作用域:文件作用域( file scope)、函数作用域( function scope)、块作用域(block sc...

归根结底不优秀的博客 1322

HttpClient和HttpURLConnection的区别

最近在研究Volley框架的源码,发现它在HTTP请求的使用上比较有意思,在Android 2.3及以上版本,使用的是HttpURLConnection,而在Android 2.2及以下版本,使用的是HttpClient。我也比较好奇这么使用的原因,于是专门找到了一位Google的工程师写的一篇博客,文中对HttpURLConnection和HttpClient进行了对比,下面我就给大家简要地翻译

HGuang_ZJH的专栏 5万+

别再死记硬背公式了!用ADS手把手教你仿真一个4GHz镜像抑制混频器(附完整工程文件)

本文详细介绍了使用Keysight ADS软件设计和仿真4GHz镜像抑制混频器的完整流程。从理论分析到实际工程实现,涵盖分支线耦合器设计、二极管建模、噪声系数仿真及性能优化等关键步骤,帮助工程师摆脱公式死记硬背,掌握实用的射频电路设计技能。附完整工程文件,可直接应用于实际项目开发。

weixin_28683391的博客 496

HTTP协议请求实现类CloseableHttpClient和HttpsURLConnection及HttpURLConnection

前者是apache提供的http连接池技术,后者是java原生http请求实现类。 Java发HTTP请求,最常见的无非是两种,一种是用java.net.URLConnection,另一种则是大名鼎鼎的HttpClient。使用java.net.URLConnection比较麻烦,而HttpClient则比较简便。 发起HTTP协议的交互请求:想发起就能发起(符合万维网系统制定的HTTP协议即...

u010287873的博客 2151

YOLOv13零基础手把手教程:在 YOLOv13 中集成 SFSConv,YOLOv13让目标检测更上一层楼

YOLOv13本教程详细介绍了如何在YOLOv13中集成SFSConv模块以提升目标检测性能。YOLOv13 SFSConv创新性地结合了分数伽柏滤波和分数傅里叶变换,通过空间处理单元(SPU)和频率处理单元(FPU)解耦处理特征。实验表明,该模块可使准确率提升5.21%,mAP提高11.45%。教程从原理分析到代码实现,系统讲解了SFSConv的数学基础、模块设计,并提供了在YOLOv13中集成该模块的详细步骤,包括配置文件修改、核心代码实现等。

FJN110的博客 2176

dolphinscheduler服务注册中心源码解析(一)服务注册与发现整体设计

下一篇文章我们开始讲解dolphinscheduler基于Zookeeper实现注册中心的源码解析。

最爱嫣夜来 375

HttpClient post 传输json 数据和 key/value数据

如果和以下问题匹配参考此博客 - 请求参数为json 格式传输,请求头的content-type为application/json - 请求参数为key/value结构

m0_54003569的博客 2498

YOLOv11 损失函数进阶:SlideLoss 让小目标检测精度飙升

创建self.loss_fun = loss_fun # 基础损失函数(如BCEWithLogitsLoss)self.loss_coef = loss_coef # 损失系数# 计算滑动权重:根据预测与真实值的差异判断样本难度# 难度越高,权重越大该类在原有损失函数的基础上,通过diff计算样本预测与真实值的差异(差异越大,样本越难),进而生成动态权重,实现对难样本的重点学习。

m0_64661770的博客 212

android 网络编程之HttpURLConnection与HttpClient使用与封装

博客逐步迁移至 极客兔兔的小站 1.写在前面 大部分andriod应用需要与服务器进行数据交互,HTTP、FTP、SMTP或者是直接基于SOCKET编程都可以进行数据交互,但是HTTP必然是使用最广泛的协议。 本文并不针对HTTP协议的具体内容,仅探讨android开发中使用HTTP协议访问网络的两种方式——HttpURLConnection和HttpClient ...

agr21673的博客 233

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android中HttpURLConnection与HttpClient的使用与封装

大部分andriod应用需要与服务器进行数据交互,HTTP、FTP、SMTP或者是直接基于SOCKET编程都可以进行数据交互,但是HTTP必然是使用最广泛的协议。   本文并不针对HTTP协议的具体内容,仅探讨android开发中使用HTTP协议访问网络的两种方式——HttpURLConnection和HttpClient   因为需要访问网络,需在AndroidManifest.xml中添加

liutao2016的博客 669

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

安卓中进行基于HTTP协议的网络访问的两种方式

安卓中进行http协议的网络访问有两种方式: 1.HttpClient (它由apache开发) 2.HttpURLConnection(google在发布安卓时在Java基础上修改得到的) 使用HC(HttpClient)/UC(HttpURLConnection)进行网络访问的基本步骤: 0. 申请权限 INTERNET访问权限 1. 任何网络访问的相关代码,必须在工作线程中执行! 2.

Ritai_Lee的博客 1030

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HttpURLConnection和HttpClient的区别

安卓中访问网络方式: Android应用程序都会使用HTTP协议来发送和接收网络数据,而Android中主要提供了两种方式来进行HTTP操作,HttpURLConnection和HttpClient。这两种方式都支持HTTPS协议、以流的形式进行上传和下载、配置超时时间、IPv6、以及连接池等功能。 1、HttpClient: 优点:DefaultHttpClient和AndroidHttp

shenshizhong的专栏 3726

Android HTTP访问的两种方式(HttpClient和HttpURLConnection)

Android HTTP访问的两种方式(HttpClient和HttpURLConnection)

Crazy程序猿 5405

HttpClient、HttpURLConnection协议访问网络

HttpClient、HttpURLConnection协议访问网络 一:HttpClient简介 HttpClient是什么? HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包。 尽管java.net软件包提供了用于通过HTTP访问资源的基本功能,但它并未提供许多应用程序所需的全部灵活性或功能。HttpClient试图通过提供高效,最新且功能丰富的程序包来实现此空白,以实现最新HTTP标准和建议的客

GuanGuBin的博客 619

简单使用URLConnection、HttpURLConnection和HttpClient访问网络资源

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666) URL的openConnection方法将返回一个URLConnection,该对象表示应用程序和URL之间的通信连接。程序可以通过它的实例向该URL发送请求,读取URL引用的资源。 下面通过一个简单示例来演示:...

孤云博客 1万+

Android访问网络,使用HttpURLConnection还是HttpClient?

大多数的Android应用程序都会使用HTTP协议来发送和接收网络数据,而Android中主要提供了两种方式来进行HTTP操作,HttpURLConnection和HTTPClient。这两种方式都支持HTTPS协议、以流的形式进行上传和下载、配置超时时间、IPv6、以及连接池等功能。 DefaultHttpClient和它的兄弟AndroidHttpClient都是HttpClient具体的实现类,它们都拥有众多的API,而且实现比较稳定,bug数量也很少。 但同时也由于HttpClient的API数量过

郭霖的专栏 11万+

HttpURLConnection与HttpClient

HttpURLConnection与HttpClient一.HttpURLConnection1.基本介绍2.提供的几个方法3.使用例子3.1使用GET方式访问HTTP3.2使用POST方式访问HTTP4.使用总结二.HttpClient1.基本介绍2.使用流程3.使用例子3.1使用GET方式访问HTTP3.2使用POST方式访问HTTP3.3POST和GET的区别4.使用总结三.表单提交中的po...

weixin_44275194的博客 2546

HTTP访问的两种方式(HttpClient+HttpURLConnection)整合汇总对比

在Android上http 操作类有两种,分别是HttpClient和HttpURLConnection,其中两个类的详细介绍可以问度娘。 HttpClient: HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient其实是一个interfac

vito的专栏 1601

HttpClient已过时,访问网络用HttpURLConnection

最近在研究Volley框架的源码,发现它在HTTP请求的使用上比较有意思,在Android 2.3及以上版本,使用的是HttpURLConnection,而在Android 2.2及以下版本,使用的是HttpClient。我也比较好奇这么使用的原因,于是专门找到了一位Google的工程师写的一篇博客,文中对HttpURLConnection和HttpClient进行了对比,下面我就给大家简要地翻译

androidstar_cn的博客 3016

HTTP访问的两种方式(HttpClient和HttpURLConnection)

使用HttpClient: NameValuePair nameValuePair1 = new BasicNameValuePair("name", "yang"); NameValuePair nameValuePair2 = new BasicNameValuePair("pwd","123123"); List nameValuePairs = new ArrayList(); n

SRC博客专栏 856
上一篇: 利用HttpClient的POST方式发起带参数的请求时,点击注册按钮无反应状态分析
下一篇: 怎么向Android stutio中导入第三方.jar包
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值