Android中利用httpclient进行网络通信的方法(以用户登录为例说明)

Android语言基础教程(248)Android通过HTTP访问网络之使用HttpClient访问网络:指尖上的网络魔法:Android HttpClient全攻略 本文深入剖析了Android中HttpClient的网络访问机制,从HTTP协议基础到HttpClient的进阶应用,通过完整示例演示了GET、POST请求的实现方式。文章针对实际开发中的常见问题提供了解决方案,并涵盖了性能优化、会话管理等高阶话题,为开发者构建健壮的Android网络应用提供全面指导。 阅读详情

作者:余蒙

1.服务器端

      服务器端和android没有太大关系,对J2EE比较熟悉的话写起来应该很容易,这里就不一一贴出代码。

首先在本地创建一个数据库表,其中包含了一个userinfo表用来存储用户信息。

需要实现的代码如下:


DBUtils:创建数据库连接对象

User实体类:用来存放用户信息

UserDao:用来对处理User相关的数据操作

UserService:调用UserDao来处理事务

UserServlet:处理用户请求,并返回


当客户端访问该servlet时,获得客户端传入的数据,处理数据,并将结果写到response中返回给客户端。

UserServlet中doPost方法如下:


1	public void doPost(HttpServletRequest request, HttpServletResponse response)  
2	            throws ServletException, IOException {  
3	        UserService us = UserService.getInstance();  
4	        String username = request.getParameter("username"); //获得从客户端传入的用户名和密码  
5	        String password = request.getParameter("password");  
6	        //System.out.println("username:"+username);  
7	        //System.out.println("password:"+password);  
8	        //response.setContentType("text/html");  
9	        PrintWriter out = response.getWriter();  
10	        if(us.login(username, password))  
11	        {  
12	            //用户登录成功!  
13	            out.println("success");  
14	        }  
15	        else    //用户登录失败  
16	            out.println("failed");        
17	        out.flush();  
18	        out.close();  
19	    }  


2.客户端,首先创建一个登录Activity。如图所示:





当用户点击登录按钮后,创建一个http请求,发送到服务器端。获得服务器返回的结果后,再进行判断并执行相关操作。

httpclient相当于一个浏览器,通过它,可以很方便的发出GET,POST请求。

该Activity的具体代码如下:


20	public class GossipActivity extends Activity {  
21	    /** Called when the activity is first created. */  
22	      
23	    private EditText usernameEdit;  
24	    private EditText passwordEdit;  
25	    private Button loginButton;  
26	      
27	    @Override  
28	    public void onCreate(Bundle savedInstanceState) {  
29	        super.onCreate(savedInstanceState);  
30	        setContentView(R.layout.main);  
31	              
32	        usernameEdit = (EditText)findViewById(R.id.usernameEdit);  
33	        passwordEdit = (EditText)findViewById(R.id.pwdEdit);  
34	        loginButton = (Button)findViewById(R.id.loginButton);  
35	          
36	        loginButton.setOnClickListener(loginListener);  
37	    }  
38	      
39	    //登陆监听器  
40	    OnClickListener loginListener = new OnClickListener(){  
41	  
42	        @Override  
43	        public void onClick(View v) {  
44	            System.out.println("Login Button clicked!");  
45	             String httpUrl = "http://10.0.2.2:8089/Gossip/LoginServlet";   
46	             System.out.println(httpUrl);  
47	             HttpPost request = new HttpPost(httpUrl);    
48	             HttpClient httpClient = new DefaultHttpClient();    
49	             //传递参数  
50	             List<NameValuePair> params = new ArrayList<NameValuePair>();    
51	             params.add(new BasicNameValuePair("username",usernameEdit.getText().toString()));   
52	             params.add(new BasicNameValuePair("password",passwordEdit.getText().toString()));                                 
53	             HttpResponse response;  
54	                try {  
55	                    HttpEntity entity = new UrlEncodedFormEntity(params, "UTF-8");    
56	                    request.setEntity(entity);    
57	                    response = httpClient.execute(request);  
58	                  
59	                 //如果返回状态为200,获得返回的结果  
60	                 if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){    
61	                     String str = EntityUtils.toString(response.getEntity());    
62	                     System.out.println("response:"+str);  
63	                     if(str.trim().equals("success")){  
64	                         //用户登录成功  
65	                         System.out.println("登录成功!");  
66	                         Intent intent = new Intent(GossipActivity.this,GossiplistActivity.class);  
67	                         startActivity(intent);  
68	                     }  
69	                     else{  
70	                         //用户登录失败  
71	                         System.out.println("登录失败!");  
72	                     }  
73	                 }else{    
74	                     System.out.println("连接失败!");  
75	                 }    
76	                } catch (ClientProtocolException e) {  
77	                    // TODO Auto-generated catch block  
78	                    e.printStackTrace();  
79	                } catch (IOException e) {  
80	                    // TODO Auto-generated catch block  
81	                    e.printStackTrace();  
82	                }    
83	    
84	        }};  
85	}  


在数据库中添加一行:用户名为123,密码为456。登录后调转到另一Activity并在控制台中打印调试信息,结果如下:





3 在向本机发送HTTP请求时,有一点必须注意,就是在android 虚拟机中,127.0.0.1为android 虚拟机的IP地址,

如果要访问本机,IP地址应该改为10.0.2.2。否则肯定会导致访问不成功!

 




android httpclient android9.0不再支持useLibrary 'org.apache.http.legacy'引入httpclient,需要引入jar 立即下载

相关推荐

Infineon MOSFET开关损耗计算实战指南

本文是英飞凌MOSFET开关损耗计算的实战指南。针对MOSFET发热问题,文章深入剖析了开关损耗的产生机理,并基于Infineon数据手册的关键参数,手把手推导了开通与关断损耗的工程计算公式。同时,指南强调了栅极电阻、寄生参数等实际因素对损耗的影响,并提供了从理论计算到实测优化的完整路径,帮助工程师精准评估与优化电源设计。

weixin_29212867的博客 444

安卓okhttp3进行网络请求,一个简单的登录页面的实现

安卓okhttp3进行网络请求,一个简单的登录页面的实现文章目录一、前言二、配置okhttp3三、activity_main.xml文件MainActivity的实现 文章目录 一、前言 本文通过okhttp3实现安卓app进行后台webapi的网络访问。 初学android,想开发一个简单的app,在网上查阅了大量的资料,但是都是一些很老的教程了,虽然适用,但是讲的不是很清楚,对没有系统学习过安卓的人来说很不友好。 二、配置okhttp3 <!--在app目录下的 build.gradle文件中添加

weixin_45606099的博客 4010

Elsevier投稿避坑指南:Ocean Engineering论文格式要求详解(附Checklist模板)

本文详细解析Elsevier旗下期刊Ocean Engineering的投稿格式要求与常见陷阱,提供实用的Checklist模板。涵盖文章类型确认、作者贡献声明、图表规范、数据声明等关键环节,帮助研究者高效通过格式审查。特别强调LaTeX排版细节、图表分辨率要求及现代伦理声明规范,助力海洋工程领域学者顺利投稿。

weixin_33734785的博客 1500

【Android】安卓实现网络请求,得到数据并显示于listview,包含token与拦截器

安卓网络请求框架,数据处理网络请求框架——请求带token与错误拦截器配置依赖创建网络拦截器创建OkHttp工具类 网络请求框架——请求带token与错误拦截器 参考 1、Android中token的使用 2、Android Retrofit网络请求框架 两个组合起来就可以完成 以1为主要框架,顺序: 配置依赖——创建网络拦截器——创建OkHttp工具类——编写请求接口——调用请求接口得到返回数据 配置依赖 看他的依赖 1、Android中token的使用 创建网络拦截器 参考 1、Android中toke

qq_50485858的博客 8936

FoundationPose 4090部署 真实场景迁移

复现并应用foundationpose

m0_52835296的博客 613

机器学习——Anaconda下载安装教程

Anaconda详细下载安装教程

2401_83693485的博客 3067

android中的网络请求(以注册登陆为例)

1、Http协议http协议:定义的浏览器向万维网服务器请求万维网文档,以及服务器把文档传递给浏览器。http是面向应用层协议。在万维网上能够可靠的交换文件(包括文本,声音,图像等)。2、客户端与服务器建立连接流程。1.客户端 通过发送url发出请求。比如:http://www.baidu.com htttp—-请求的协议;(常见的http和https协议) www.baidu.com—-

androidxiaogang的博客 8469

20、七鳃鳗繁殖与早期生活史:从水质到养殖的全面解析

本文全面解析了七鳃鳗的繁殖与早期生活史,重点探讨了水质对幼体生存的影响、养殖密度与生长关系、变态过程的时间与大小特征,以及人工繁殖在濒危物种恢复和入侵物种控制中的应用。同时,文章分析了大规模养殖面临的挖掘基质需求、空间限制、清洁管理、疾病防控及微生物环境等挑战,并强调实验室养殖对科学研究和种群管理的重要意义。随着技术进步,未来有望扩展更多物种的繁殖研究,揭示七鳃鳗生物学的进化奥秘,实现资源的可持续利用。

l6m7n8的博客 116

Android 网络请求登录后更新页面实现 Handler+HTTP请求详解

为了实现登录功能,我们需要一下几步:1、获取UI数据,并向服务器发送请求2、等待返回数据,解析3、将返回数据更新到UI线程中为了完成以上几步,我根据每步的功能提出自己的解决方法,顺便整理出对应的知识供大家参考。Handler众所周知,Android程序运行会开启一个UI线程,也就是主线程,用于处理UI事件。只有在UI线程中才能进行对UI的各种操作,如果在非UI线程中直接对界面元素进行操作,会报错。...

runrun117的博客 3438

AI应用质量工程实践:从评估到监控的完整体系构建

在软件工程领域,质量保障体系是确保产品稳定可靠的核心机制,涉及度量指标、保障流程和工具链的完整闭环。随着生成式AI应用的快速发展,如何将传统软件工程中的质量门禁思想引入AI领域,成为工程实践的关键挑战。其核心原理在于构建可量化、可监控、可改进的质量评估框架,通过自动化测试、持续监控和反馈优化来管理AI输出的不确定性。这一技术价值在于将AI应用从原型阶段推向产品化,确保输出的一致性、安全性和可靠性。在实际应用场景中,开发者需要从功能性、非功能性、一致性和合规性四个维度构建评估体系,并借助LLM-as-a-Ju

weixin_28728279的博客 294

YOLOV26详解 从原理到部署

计算机视觉领域最具影响力的目标检测框架迎来重大里程碑。2026年1月,Ultralytics 正式发布 YOLOv26——这不是一次简单的版本迭代,而是一场面向边缘计算时代的架构重构。本专栏基于 Ultralytics 官方技术白皮书、YOLO Vision 2025 大会首发内容及国际前沿研究成果,系统拆解 YOLOv26 从算法原理到工程落地的全栈技术体系。与常规教程不同,我们聚焦与,帮助你在端侧 AI 部署的实战中掌握核心竞争力。

u012133341的博客 2025

Android 之 HTTP请求方式:HttpClient

HttpClient 用于接收/发送Http请求/响应,但不缓存服务器响应,不执行HTML页面潜入的JS代码,不会对页面内容 进行任何解析,处理!其实关于HttpClient的例子有很多,比如笔者曾经用它来抓学校教务系统上学生的课程表: 这就涉及到Cookie,模拟登陆的东西,说到抓数据(爬虫),一般我们是搭配着JSoup来解析 抓到数据的,有兴趣可以自己查阅相关资料,这里贴下笔者毕设app里获取网页部分的关键 代码!// 获取响应的cookie值。// 设置Post提交的头信息的参数。

leyang0910的博客 1003

华为Ascend C算子开发能力认证(中级)(个人记录,有完整代码,已通过认证,仅供参考)

本文介绍了在昇腾NPU环境下实现Sigmoid算子的完整流程。首先需要在华为云ModelArts-Notebook或开发者套件上搭建环境,要求CANN版本为8.0.0.beta1。主要内容包括:1)实现SigmoidCustom算子的kernel侧核函数代码;2)完成host侧Tiling结构体实现;3)支持Float16数据类型。代码实现部分详细展示了核函数计算流程、数据拷贝和牛顿迭代优化方法。最后介绍了编译部署流程,包括环境配置、代码上传、编译执行等步骤,并提供了提交规范说明。该实现通过调用Ascend

qq_73044452的博客 1109

Android 利用httpclient进行网络通信,实现用户登录的方法

1.服务器端 服务器端和android没有太大关系,对J2EE比较熟悉的话写起来应该很容易,这里就不一一贴出代码。 首先在本地创建一个数据库表,其中包含了一个userinfo表用来存储用户信息。 需要实现的代码如下: DBUtils:创建数据库连接对象 User实体类:用来存放用户信息 UserDao:用来对处理User相关的数据操作 UserService:调用UserDao来

ymyss4的专栏 2547

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

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

Android 网络通信方式

恍惚间,从事Android开发已经有半年有余了!之前一直在沉浸于项目中的Bug解决,颇有种一叶障目不见泰山的感觉,对Android网络通信这块儿缺乏一种宏观的认识,适逢一个难得的阴雨周末,躺着也是无聊,倒不如写写耍耍来的痛快!

feihaixin的专栏 755

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HttpClient在Android网络通信中的应用

HttpClient在Android网络通信中的应用—HttpClient传递参数给服务器。HttpClient在Android网络通信中的应用HttpClient传递参数给服务器 HttpClient的介绍 步骤简介 源码分析 HttpClientjava doPost方法 doGet方法 Registjava 注意事项HttpClient的介绍HTTP 协议可能是现在 Internet 上使用得

tonydandelion2014的博客 857

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

android网络通信,Android网络通信总结

android的网络通信方式,大体和java平台的很相似!java提供的API:android平台提供的API:一、使用http包工具进行通信,分get和post两种方式,两者的区别是:1,post请求发送数据到服务器端,而且数据放在html header中一起发送到服务器url,数据对用户不可见,get请求是把参数值加到url的队列中,这在一定程度上,体现出post的安全性要比get高2,get...

weixin_34199121的博客 292

使用HttpClient接口实现网络通信

在Android中,我们可以通过使用标准的Java接口来完成Android应用程序的联网操作。但是在实际开发中,可能会需要用到更复杂的联网操作,为此,Android平台提供了Apache HttpClient接口,为客户端的HTTP编程提供了高效、便捷、功能丰富的工具包支持。   Android平台在引入Apache HttpClient的同时,还对其进行了一些封装和扩展,如设置缺省的HTT

Java程序员命运之改变 747

Android学习笔记8:使用HttpClient接口实现网络通信

在Android中,我们可以通过使用标准的Java接口来完成Android应用程序的联网操作。但是在实际开发中,可能会需要用到更复杂的联网操作,为此,Android平台提供了ApacheHttpClient接口,为客户端的HTTP编程提供了高效、便捷、功能丰富的工具包支持。   Android平台在引入ApacheHttpClient的同时,还对其进行了一些封装和扩展,如设置缺省的...

dianlv7051的博客 249

Android学习篇章43-HttpClient网络通信

MainActivity: public class MainActivity extends Activity { EditText nameTxt=null; EditText pwdTxt=null; ProgressDialog dialog=null; Handler handler=new Handler() { @Override public

奇迹的天堂 929

android HttpClient接口实现网络通信

引自http://www.cnblogs.com/menlsh/archive/2013/05/25/3099479.html,稍有改动 在Android中,我们可以通过使用标准的Java接口来完成Android应用程序的联网操作。但是在实际开发中,可能会需要用到更复杂的联网操作,为此,Android平台提供了ApacheHttpClient接口,为客户端的HTTP编程提供了高效、便捷、功能丰...

weixin_30525825的博客 96

HttpURLConnection和HttpClient比较

1、HttpClient比HttpURLConnection功能更强大,但是做java建议用前者,安卓建议用后者 2、这两者都支持HTTPS,streaming 上传与下载,配置超时时间,IPv6, 以及连接池。 3.区别 HttpClient是个很不错的开源框架,封装了访问http的请求头,参数,内容体,响应等等, HttpURLConnection是java的标准类,什么都没封装,

qq_27029491的博客 1255

android 云应用开发,Android云应用开发:网络通信技术介绍

【IT168技术】云与端应用的技术基础就是网络通信技术,就应用层的网络通信技术而言,可以使用Socket、HTTP和Web Service,Android应用开发同样必不可少。▲图书推荐1.Socket通信Socket是一种低级、原始的通信方式,要编写服务器端代码和客户端代码,自己开端口,自己制定通信协议、验证数据安全和合法性,而且通常还应该是多线程的,开发起来比较繁琐。但是它也有其优点:灵活,不...

weixin_32790659的博客 382

Android网络编程(四) 之 HttpClient与HttpURLConnection

Android本身提供了Apache 的 HttpClient 和 Java 的HttpURLConnection来进行网络请求通信。它们都支持以流的方式进行网络通信,并且都支持https。 1 HttpClient HttpClient的优势在于处理一些可能需要用户登录而且具有相应的权限才可访问该页面。例如需要涉及Session、Cookie的处理时,就要使用HttpClient。它的实现类...

子云心的博客 570

android 网络通讯案例,Android之网络通信案例分析

由于一个项目的需要,我研究了一下android的网络通信方式,大体和java平台的很相似!android平台也提供了很多的API供开发者使用,请按示例图:首先,介绍一下通过http包工具进行通信,分get和post两种方式,两者的区别是:1,post请求发送数据到服务器端,而且数据放在html header中一起发送到服务器url,数据对用户不可见,get请求是把参数值加到url的队列中,这在...

weixin_29701553的博客 310
上一篇: Content Prodvider 类----实例:获取通讯录信息
下一篇: 基于Google Map的简单android应用开发【图解】
pku_android
博客等级 码龄15年 450粉丝 151原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值