android 2g网络 http请求代理,Android网络通信之Http协议
发布日期:2021-06-27 04:24:55 浏览次数:1 分类:技术文章

本文共 4997 字,大约阅读时间需要 16 分钟。

[align=center][size=x-large]Android网络通信之Http协议[/size][/align][size=medium]在通过Http协议进行Android网络编程时,首先要了解清楚Http通信中的POST和GET请求方式的不同,GET可以获得静态页面,也可以把参数放在URL字符串后面,传递给服务器。而POST方法的参数是放在Http请求中。还有一点区别就是:传输的文件较小时一般使用GET方法;传输大文件时,最好使用POST方法。

HttpURLConnection是继承于URLConnection类,二者都是抽象类。其对象主要通过URL的openConnection方法获得。创建方法如下代码所示:[/size]

//链接路径

URL url=new URL("http://192.168.1.111:8080/web/tt.txt");

//基于HTTP协议的链接对象,开通链接

HttpURLConnection connection=(HttpURLConnection)url.openConnection();

[size=medium][b]对于你选取选取不同方法来进行网络通信,其创建方式在设置上有些许的不同,示例代码如下:[/b][/size]

[size=large]选用GET方法。[/size]

//链接路径

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");

[size=large]选用POST方法。[/size]

//链接路径

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");

[size=medium][b]下面给出实现手机获取服务器上一张图片(此方法可以通过手机的2G/3G网来获取服务器上你想要的图文信息,前提是:你的服务器必须是在广域网上。在这里附上一个申请免费的服务器的网站:http://eatj.com)的实例代码:[/b][/size]

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;

}

[b][size=medium]再给出给服务器发送信息的实例代码:[/size][/b]

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++;

}

Stringstr1=new String(data);

st=str1;

connect.disconnect();

return st;

}

[b][size=medium]以上发送和接收文本文件的服务器类为一个自制的虚拟服务器,创建平台为Tomcat。下面给出此服务器类代码:[/size][/b]

[img]http://dl2.iteye.com/upload/attachment/0089/7985/29392e35-b5c4-3906-ba80-7bd72a5cf892.bmp[/img]

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方法

}

}

转载地址:https://blog.csdn.net/weixin_42166105/article/details/117473890 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:android传感器灵敏度,Android-Sensor重力感应器灵敏度问题
下一篇:鸿蒙系统发布老机型能升级,华为鸿蒙系统升级标准曝光:需麒麟710芯以上机型...

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年03月17日 09时11分55秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

下载了XAMPP怎样打开MYSQL_xampp mysql安装启动 2019-04-21
pdo转mysql_mysql转mysqli或pdo 2019-04-21
mysql如果没有表就创建_mysql – 改变表是否存在或创建如果没有 2019-04-21
ireport连接mysql_ireport 4.5教程之数据源介绍 2019-04-21
mysql多维模型_数据仓库数据库设计方法---关系模型和多维模型比较分析 2019-04-21
局域网聊天程序 java MySQL_java 基于TCP/IP协议的局域网聊天小程序 2019-04-21
r glm 中的p值_假设检验中的P值 2019-04-21
mysql中sql语句结构_MySQL中使用sql语句获得表结构 2019-04-21
如何增加mysql主键约束_mysql修改表时怎么添加主键约束? 2019-04-21
java选择路径窗口_Java实现选择电脑路径的方法 2019-04-21
java 图像渐变_Java基础之在窗口中绘图——渐变填充(GradientApplet 1) 2019-04-21
冒泡排序面向对象java_所谓的面向对象实现的冒泡排序 2019-04-21
proto 客户端 JAVA_Kubernetes官方java客户端之五:proto基本操作 2019-04-21
java编写roguelike_RogueLike地牢生成算法Unity实现 2019-04-21
java ajax 修改数据库数据库数据库_AJAX 自学练习 无刷新提交并修改数据库数据并显... 2019-04-21
java并发编程指南博客_Java并发编程-synchronized指南 2019-04-21
java怎么中断阻塞状态_java并发编程()阻塞方法与中断方法 2019-04-21
java zlib 位运算_位运算入门:找出一个二进制数的最右端的第一个1;计算一个二进制数中1的个数;找出数组中唯一一个出现次数为奇数的数;找出数组中唯二两个出现次数为奇数的数... 2019-04-21
java lua热更新_lua热更新学习 2019-04-21
script执行php文件_php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法... 2019-04-21