Android网络编程之Http请求服务器数据(GET方式)
2015-07-13 16:24
549 查看
进行Android应用开发,其中不得不使用到网络编程,最基本的就是向服务器发送Http请求,并接收从服务器返回的数据,该类数据一般为JSON或XML格式。
向服务器进行请求数据一般有GET、POST两种方式,两者基本类似,以GET居多。本文先讨论使用GET方式向聚合数据API发送请求,以获得手机号码归属地的信息。归属地查询的接口的请求示例为:http://apis.juhe.cn/mobile/get?phone=13429667914&key=您申请的KEY。默认返回的格式为JSON。最后把返回结果显示在TextView上。直接上代码:
public class MainActivity extends Activity {
private TextView text;
private String url = "http://apis.juhe.cn/mobile/get?phone=13429667914&key=9719c91bd4ac2647c67c6cd067b5cb8e";//向服务器请求的url.
private Handler handler = new Handler();//使用Handler更新UI,因为网络操作是在子线程中进行的,子线程不能更新UI,所以只能使用Handler机制;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView) findViewById(id_text);
//新建线程Thread,开始网络操作。
new Thread() {
@Override
public void run() {
try {
URL httpUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();//与服务器建立连接;
conn.setReadTimeout(5000);
conn.setRequestMethod("GET");//设置请求方式为GET
final StringBuffer sb = new StringBuffer();//把获取的数据不断存放到StringBuffer中;
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));//使用reader向输入流中读取数据,并不断存放到StringBuffer中;
String line;
while ((line = reader.readLine()) != null) {//只要还没有读取完,就不断读取;
sb.append(line);//在StringBuffer中添加;
}
handler.post(new Runnable() {//使用Handler更新UI;当然这里也可以使用sendMessage();handMessage()来进行操作;
@Override
public void run() {
text.setText(sb.toString());//StringBuffer转化为String输出;
}
});
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
}最后返回的结果如截图所示:
。成功接收到从服务器返回的JSON数据。
如果需要返回的数据为XML,只要重新拼装URL即可。如:"http://apis.juhe.cn/mobile/get?phone=13429667914&key=9719c91bd4ac2647c67c6cd067b5cb8e&dtype=xml";最后返回的结果为XML,截图如下:
。
最后开发者根据需要,可以对XML和JSON进行解析,完成业务需求。
向服务器进行请求数据一般有GET、POST两种方式,两者基本类似,以GET居多。本文先讨论使用GET方式向聚合数据API发送请求,以获得手机号码归属地的信息。归属地查询的接口的请求示例为:http://apis.juhe.cn/mobile/get?phone=13429667914&key=您申请的KEY。默认返回的格式为JSON。最后把返回结果显示在TextView上。直接上代码:
public class MainActivity extends Activity {
private TextView text;
private String url = "http://apis.juhe.cn/mobile/get?phone=13429667914&key=9719c91bd4ac2647c67c6cd067b5cb8e";//向服务器请求的url.
private Handler handler = new Handler();//使用Handler更新UI,因为网络操作是在子线程中进行的,子线程不能更新UI,所以只能使用Handler机制;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView) findViewById(id_text);
//新建线程Thread,开始网络操作。
new Thread() {
@Override
public void run() {
try {
URL httpUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();//与服务器建立连接;
conn.setReadTimeout(5000);
conn.setRequestMethod("GET");//设置请求方式为GET
final StringBuffer sb = new StringBuffer();//把获取的数据不断存放到StringBuffer中;
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));//使用reader向输入流中读取数据,并不断存放到StringBuffer中;
String line;
while ((line = reader.readLine()) != null) {//只要还没有读取完,就不断读取;
sb.append(line);//在StringBuffer中添加;
}
handler.post(new Runnable() {//使用Handler更新UI;当然这里也可以使用sendMessage();handMessage()来进行操作;
@Override
public void run() {
text.setText(sb.toString());//StringBuffer转化为String输出;
}
});
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
}最后返回的结果如截图所示:
。成功接收到从服务器返回的JSON数据。
如果需要返回的数据为XML,只要重新拼装URL即可。如:"http://apis.juhe.cn/mobile/get?phone=13429667914&key=9719c91bd4ac2647c67c6cd067b5cb8e&dtype=xml";最后返回的结果为XML,截图如下:
。
最后开发者根据需要,可以对XML和JSON进行解析,完成业务需求。
相关文章推荐
- tomcat 服务器配置 https 双向认证
- socket网络编程
- HTTP Status 500 - {msg=SolrCore 'collection1' is not available due to init failure: Could not load c
- 转-浅谈HTTP-GET 、 HTTP-POST 和SOAP
- 阿里巴巴的菜鸟网络
- TCP状态转换图
- ImageLoader是否禁止加载网络图片。
- Nginx 核心模块、HTTP模块、邮件模块解析
- TCP/IP网络编程 学习笔记_5 --基于TCP的服务端/客服端
- TCP/IP网络编程 学习笔记_5 --基于TCP的服务端/客服端
- TCP通信协议的连接与挥手
- ubuntu网络已禁用的解决方案
- tcpdump命令详解
- 黑马程序员_网络编程
- 树莓派搭建简易的NAS服务器
- iOS开发网络篇—Reachability检测网络状态
- java网络编程
- 代码设置HttpGetEnabled 的值
- iOS开发系列--网络开发
- 基于Cobbler+Kickstart构建网络安装环境(Linux 大规模部署安装)