android网络编程之HttpUrlConnection的讲解--GET请求
1、服务器后台使用Servlet开发,这里不再介绍。
2、测试机通过局域网链接到服务器上,可以参考我的博客:http://www.cnblogs.com/begin1949/p/4905192.html。(当初以为可以直接通过USB访问http://127.0.0.1:8080/)。
3、网络开发不要忘记在配置文件中添加访问网络的权限
<uses-permission android:name="android.permission.INTERNET"/>
4、网络请求、处理不能在主线程中进行,一定要在子线程中进行。因为网络请求一般有1~3秒左右的延时,在主线程中进行造成主线程的停顿,对用户体验来说是致命的。(主线程应该只进行UI绘制,像网络请求、资源下载、各种耗时操作都应该放到子线程中)。
5、
public class GetActivity extends Activity {
private TextView mTvMsg;
private String result;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_get);
initView();
}
private void initView(){
mTvMsg = (TextView) findViewById(R.id.tv_servlet_msg);
new Thread(getThread).start();
}
private Thread getThread = new Thread(){
public void run() {
HttpURLConnection connection = null;
try {
URL url = new URL("http://192.168.23.1:8080/TestProject/GetTest");
connection = (HttpURLConnection) url.openConnection();
// 设置请求方法,默认是GET
connection.setRequestMethod("GET");
// 设置字符集
connection.setRequestProperty("Charset", "UTF-8");
// 设置文件类型
connection.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");
// 设置请求参数,可通过Servlet的getHeader()获取
connection.setRequestProperty("Cookie", "AppName=" + URLEncoder.encode("你好", "UTF-8"));
// 设置自定义参数
connection.setRequestProperty("MyProperty", "this is me!");
if(connection.getResponseCode() == 200){
InputStream is = connection.getInputStream();
result = StringStreamUtil.inputStreamToString(is);
Message msg = Message.obtain();
msg.what = 0;
getHandler.sendMessage(msg);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(connection != null){
connection.disconnect();
}
}
};
};
private Handler getHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
if(msg.what == 0 && result!=null){
mTvMsg.setText(result);
}
};
};
}
6、

7、请求参数可以通过URLEncoder.encode("你好", "UTF-8")进行编码,URLDecoder.decode("", "UTF-8")进行解码。这里URLEncoder会对等号"="进行编码,这里要注意一下。
8、这里可以通过connection.setRequestProperty("MyProperty", "this is me!")进行参数传递,通过Servlet的getHeader()获得该参数。我想它的安全性应该比直接拼接到URL上面安全。
9、第一步:实例化URL对象。
第二步:实例化HttpUrlConnection对象。
第三步:设置请求连接属性,传递参数等。
第四步:获取返回码判断是否链接成功。
第五步:读取输入流。
第六步:关闭链接。
android网络编程之HttpUrlConnection的讲解--GET请求的更多相关文章
- android网络编程之HttpUrlConnection的讲解--POST请求
1.服务器后台使用Servlet开发,这里不再介绍. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android. ...
- android网络编程之HttpUrlConnection的讲解--实现文件的断点上传
1.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android.permission.INTERNET"/& ...
- android网络编程之HttpUrlConnection的讲解--实现文件断点下载
1.没有实现服务器端,下载地址为网上的一个下载链接. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android. ...
- android网络编程之HttpUrlConnection的讲解--上传大文件
1.服务器后台使用Servlet开发,这里不再介绍. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android. ...
- android网络编程之HttpUrlConnection的讲解--DownLoadManager基本用法
1.DownLoadManager是Android用系统服务(Service)的方式来优化处理长时间的下载操作的一个工具类.避免了我们去处理多线程,通知栏等等. 2.不要忘记添加权限 <uses ...
- Android 网络编程之HttpURLConnection运用
Android 网络编程之HttpURLConnection 利用HttpURLConnection对象,我们可以从网络中获取网页数据. 01 URL url = new URL("http ...
- android 网络编程之HttpURLConnection与HttpClient使用与封装
1.写在前面 大部分andriod应用需要与服务器进行数据交互,HTTP.FTP.SMTP或者是直接基于SOCKET编程都可以进行数据交互,但是HTTP必然是使用最广泛的协议. 本文并 ...
- Android网络编程之HttpClient运用
Android网络编程之HttpClient运用 在 Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们 ...
- Android网络编程之Http通信
Android中提供的HttpURLConnection和HttpClient接口可以用来开发HTTP程序.以下是本人在学习中的总结与归纳.1. HttpURLConnection接口 首先需要 ...
随机推荐
- [折腾纪实]JAVA的坑
开贴记录使用JAVA踩的坑-- P.S. 学习编程最好的方法就是用一个贴心的IDE写,然后隔着屏幕都能感觉到IDE在骂自己SB-- Overridable method calls in constr ...
- spring No adapter for handler 错误
为了实现controller对JSON数据的自动解析,在spring-mvc.xml文件中增加了 <bean class="org.springframework.web.servle ...
- Android中的eventBus传值
第一步:在build.gradle中添加依赖dependencies { compile 'org.greenrobot:eventbus:3.0.0'} 第二步:创建一个 Event类: 注意:en ...
- de4dot 脱壳工具
开源免费的一款工具 官方地址http://www.de4dot.com/ 很NB的工具,能脱大部分的壳 如下 Babel.NET CodeFort CodeVeil CodeWall CryptoOb ...
- neutron openvswitch agent实现安全组的方法
关于openstack安全组,采用一问一答的形式记录如下 1. 是加载在计算节点的还是网络节点的? 是加载在计算节点的 2. 是使用iptable规则实现的吗? M版的neutron实现了openvs ...
- android 一些数据转换方法
android 一些数据转换方法 package com.ai9475.util; import android.content.Context; import android.content.res ...
- 第五十三节,socket模块介绍,socket单线程通讯
socket单线程通讯,只能单线程通讯,不能并发 socket是基于(TCP.UDP.IP)的通讯.也叫做套接字 通讯过程由服务端的socket处理信息发送,由客户端的socket处理信息接收. so ...
- PAT 团体程序设计天梯赛-练习集 L1-020. 帅到没朋友
原题 https://www.patest.cn/contests/gplt/L1-020 当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友.本题就要求你找出那些帅到没有朋友的人. ...
- (转)Java程序员应该了解的10个面向对象设计原则
面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator ...
- HDU_1245_Saving James Bond_最短路
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1245 题意:给一个已知直径的圆形岛,然后岛的附近是湖,湖里有一些点,以坐标的形式给出,最外层是矩形的终 ...