Android网络通信之Http协议
在通过Http协议进行Android网络编程时,首先要了解清楚Http通信中的POST和GET请求方式的不同,GET可以获得静态页面,也可以把参数放在URL字符串后面,传递给服务器。而POST方法的参数是放在Http请求中。还有一点区别就是:传输的文件较小时一般使用GET方法;传输大文件时,最好使用POST方法。
HttpURLConnection是继承于URLConnection类,二者都是抽象类。其对象主要通过URL的openConnection方法获得。创建方法如下代码所示://链接路径
URL url=new URL("http://192.168.1.111:8080/web/tt.txt");
//基于HTTP协议的链接对象,开通链接
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
对于你选取选取不同方法来进行网络通信,其创建方式在设置上有些许的不同,示例代码如下:
选用GET方法。
//链接路径
URL url=new URL("http://192.168.1.111:8080/web/tt.txt");
//基于HTTP协议的链接对象,开通链接
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
//设置链接响应时长为5秒
connection.setConnectTimeout(5000);
//通过GET方法来进行信息交流
connection.setRequestMethod("GET");
选用POST方法。
//链接路径
URL url=new URL("http://192.168.1.111:8080/web/ManageServlet2");
//基于HTTP协议的链接对象,开通链接
HttpURLConnection connect=(HttpURLConnection) url.openConnection();
//设置链接响应时长为5秒
connect.setConnectTimeout(5000);
/*
* 此部分为不可或缺的设置
*/
connect.setDoInput(true);//输入流采用字节流
connect.setDoOutput(true);//输出流采用字节流
connect.setUseCaches(false);//设置缓存
connect.setRequestMethod("POST");//响应方式
connect.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
connect.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
下面给出实现手机获取服务器上一张图片(此方法可以通过手机的2G/3G网来获取服务器上你想要的图文信息,前提是:你的服务器必须是在广域网上。在这里附上一个申请免费的服务器的网站:http://eatj.com)的实例代码:public static byte[] getImage() throws Exception {
//此处路径为我在网上申请的一个免费的JSP空间路径,
URL url=new URL("http://zj954786746.s43.eatj.com/tomcat.gif");
//建立链接
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
//响应时间设置为10秒
connection.setConnectTimeout(10000);
connection.setRequestMethod("GET");//使用GET方式连接
byte[] data = null;
if(connection.getResponseCode()==200){//判断响应是否正确,可加可不加
System.out.println("#############"+connection.getResponseCode());
InputStream in=connection.getInputStream();
int count=0,i=-1;
data=new byte[in.available()];
while((i=in.read())!=-1){
data[count]=(byte)i;
count++;
}
}
connection.disconnect();//关闭连接
return data;
}
再给出给服务器发送信息的实例代码:public static String sendData(String str) throws Exception {
//链接路径
URL url=new URL("http://192.168.1.111:8080/web/ManageServlet2");
//基于HTTP协议的链接对象,开通链接
HttpURLConnection connect=(HttpURLConnection) url.openConnection();
//设置链接响应时长为5秒
connect.setConnectTimeout(5000);
/*
* 此部分为不可或缺的设置
*/
connect.setDoInput(true);//输入流采用字节流
connect.setDoOutput(true);//输出流采用字节流
connect.setUseCaches(false);//设置缓存
connect.setRequestMethod("POST");//响应方式
connect.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
connect.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//对发送文字进行编码
send="message="+URLEncoder.encode(str, "gb2312");
//获取信息输出流
OutputStream out=connect.getOutputStream();
//
DataOutputStream out_data=new DataOutputStream(out);
out_data.writeBytes(send);
out_data.flush();//清空流管道中的信息
out_data.close();//关闭信息流
/*
* 接收服务器接收到我发送的信息做出的响应信息
* (以次判断是否成功发送)
*/
//获取信息输入流
InputStream in=connect.getInputStream();
int count=0,i=-1;
byte[] data=new byte[in.available()];
while((i=in.read())!=-1){
data[count]=(byte)i;
count++;
}
String str1=new String(data);
st=str1;
connect.disconnect();
return st;
}
以上发送和接收文本文件的服务器类为一个自制的虚拟服务器,创建平台为Tomcat。下面给出此服务器类代码:
package servlet;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ManageServlet2
*/
public class ManageServlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ManageServlet2() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取发送过来的信息
String str=request.getParameter("message");
response.getOutputStream().print("ok");//做出响应信息回复
//文件保存路径
File f=new File("C:\\Documents and Settings\\Administrator\\桌面\\text.txt");
if(f.exists()){
f.delete();
}else{
f.createNewFile();
}
OutputStream out=new FileOutputStream(f.getAbsolutePath());
DataOutputStream out_data=new DataOutputStream(out);
out_data.writeBytes(str);
out.flush();
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);//调用doGet方法
}
}
- 大小: 22.2 KB
分享到:
相关推荐
在Android系统应用开发中,网络通信是至关重要的一个环节,特别是在构建交互性强的应用时。...通过这样的实践,学生不仅能够了解Android网络通信的原理,还能掌握实际应用中的关键技术和最佳实践。
在Android应用开发中,HTTP协议编程是至关重要的一个环节,特别是在进行网络通信时。老罗的这个Android视频教程深入浅出地讲解了如何在Android环境中使用HTTP协议进行数据交互,对于初学者和有一定经验的开发者来说...
在Android开发中,网络通信是应用功能不可或缺的一部分,而URL(Uniform Resource Locator)则是网络通信的基础,用于定位网络上的资源。本示例将详细介绍如何在Android应用中利用URL进行网络通信。 首先,我们需要...
这篇集合了多篇关于Android网络通信的论文和文献,将为我们深入理解这一主题提供丰富的理论基础和实践指导。 首先,Android平台提供了多种网络通信方式,包括HTTP/HTTPS、Socket编程、FTP、Bluetooth等。其中,...
在Android应用开发中,网络通信是一项基础且重要的功能,尤其在数据交换、文件上传和下载等方面。本案例主要探讨如何利用HTTP协议在Android环境中实现文件上传。HTTP(超文本传输协议)是互联网上应用最广泛的一种...
Android网络编程是移动应用开发中的一个重要组成部分,而Http通信则是网络编程中最常用的协议之一。在Android平台上,我们通常会使用HttpURLConnection或者第三方库如Apache HttpClient和OkHttp等进行Http通信。 1....
在Android移动端开发中,网络通信是至关重要的一个环节,尤其是基于HTTP协议的网络通信。本教程将深入讲解HTTP协议分析,以及如何在Java Android平台上实现网络通信。首先,我们需要理解HTTP协议的基本概念。 HTTP...
"老罗android视频开发源码和ppt--android之http协议编程.rar"这个压缩包包含的资源,很显然是为了帮助开发者深入理解并实践Android中的HTTP通信。 老罗,全名罗升阳,是一位知名的Android技术讲师,他的教学资源...
在Android开发中,与服务器进行数据交互是必不可少的,而HTTP协议是互联网上应用最为广泛的一种网络协议。本示例将关注如何在Android客户端与Tomcat服务器之间利用HTTP协议进行通信,这对于初学者来说是非常实用的...
在Android系统中,服务(Service)、网络通信和定位服务是三个关键的组件,它们共同构建了应用程序与外界交互的核心机制。下面将详细讲解这三个方面的知识。 ### 一、Android 手机服务 服务是Android应用中的一种...
总结,Android网络通信涵盖了多种技术栈,包括选择合适的HTTP库、正确配置权限、进行异步处理、处理JSON数据、使用WebSocket以及应对网络状态变化。理解并熟练掌握这些知识点,将使开发者能够高效地构建功能丰富的...
在Android开发中,进行HTTP通信是常见的操作,用于与服务器交换数据。HTTP(超文本传输协议)是一种基于TCP/IP通信协议来交换数据的应用层协议,广泛应用于网页浏览、API交互等场景。本教程将深入讲解如何在Android...
**Android网络通信** Android系统作为一个开放的移动平台,其网络通信功能是应用程序开发中的核心部分。无论是下载数据、上传文件,还是实现实时通信,都离不开网络功能的支持。本篇文章将深入探讨Android网络通信...
在Android开发中,网络通信是应用与服务器交互的重要方式,HTTP协议是最常见的一种网络通信协议。本DEMO "androidHtttp网络通信测试DEMO" 针对Android平台下的Http网络请求进行了深入的讲解和实践,旨在帮助开发者...
1. Android网络通信框架 Android系统提供了一系列API来支持网络通信,包括HttpURLConnection、HttpClient(已废弃)、OkHttp等。开发者可以根据项目需求选择合适的网络库。在WIFI通信中,通常使用Socket编程或者...
在Android开发中,网络通信是不可或缺的一部分,而HTTP(超文本传输协议)是最常见的网络通信协议之一。本篇文章将深入探讨Android中使用HTTP的基础知识,包括HTTP协议的基本原理以及源码解析。 首先,理解HTTP协议...
这些源码实例涵盖了Android网络通信的基础和进阶技术,对于理解网络通信机制和提升开发技能非常有帮助。通过学习和实践,开发者可以更好地掌握在Android应用中如何进行数据交换和远程调用,从而实现丰富的功能。
Frida 协议还可以用于分析应用的网络通信,检测应用中的恶意行为,并加强应用的安全性。 在 Frida 协议的基础上,我们可以构建一个更加安全的 Android 应用生态系统,保护用户的隐私和财产安全,提高企业的商业机密...
一、Android网络通信基础 Android提供了多种网络通信方式,包括HTTP/HTTPS、Socket、WebSocket等。HTTP和HTTPS主要用于Web服务,Socket适用于低级TCP/IP通信,而WebSocket则提供双向实时通信。在这个示例中,我们...
本文将深入探讨Android网络通信的基本概念、技术栈以及实现过程,旨在帮助开发者理解如何在Android平台上实现实时的手机间聊天功能。 首先,Android网络通信的基础是Java的Socket编程。Socket是TCP/IP协议族的一...