URLConnection和HttpClient使用入门
- <?xml version="1.0" encoding="utf-8"?>
 - <linearlayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent"> - <textview android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/TextView01"
android:text="网络连接测试"> - <button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/Button01"
android:text="使用URLConnection访问GoogleWeatherAPI"> - </button>
 - <button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/Button02"
android:text="使用HttpClient访问GoogleWeatherAPI"> - </button>
 - <scrollview android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ScrollView01">
 - <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/TextView02">
 - </textview>
 - </scrollview>
 - </textview></linearlayout>
 
复制代码
3、MainActivity.java的内容如下:
- package android.basic.lesson30;
 - import java.io.InputStreamReader;
 - import java.net.HttpURLConnection;
 - import java.net.URL;
 - import org.apache.http.client.ResponseHandler;
 - import org.apache.http.client.methods.HttpGet;
 - import org.apache.http.impl.client.BasicResponseHandler;
 - import org.apache.http.impl.client.DefaultHttpClient;
 - import android.app.Activity;
 - import android.os.Bundle;
 - import android.view.View;
 - import android.widget.Button;
 - import android.widget.TextView;
 - import android.widget.Toast;
 - public class MainActivity extends Activity {
 - TextView tv;
 - String googleWeatherUrl1 = "http://www.google.com/ig/api?weather=zhengzhou";
 - String googleWeatherUrl2 = "http://www.google.com/ig/api?hl=zh-cn&weather=zhengzhou";
 - /** Called when the activity is first created. */
 - @Override
 - public void onCreate(Bundle savedInstanceState) {
 - super.onCreate(savedInstanceState);
 - setContentView(R.layout.main);
 - // 定义UI组件
 - Button b1 = (Button) findViewById(R.id.Button01);
 - Button b2 = (Button) findViewById(R.id.Button02);
 - tv = (TextView) findViewById(R.id.TextView02);
 - // 设置按钮单击监听器
 - b1.setOnClickListener(new View.OnClickListener() {
 - @Override
 - public void onClick(View v) {
 - // 使用URLConnection连接GoogleWeatherAPI
 - urlConn();
 - }
 - });
 - // 设置按钮单击监听器
 - b2.setOnClickListener(new View.OnClickListener() {
 - @Override
 - public void onClick(View v) {
 - // 使用HttpCient连接GoogleWeatherAPI
 - httpClientConn();
 - }
 - });
 - }
 - // 使用URLConnection连接GoogleWeatherAPI
 - protected void urlConn() {
 - try {
 - // URL
 - URL url = new URL(googleWeatherUrl1);
 - // HttpURLConnection
 - HttpURLConnection httpconn = (HttpURLConnection) url.openConnection();
 - if (httpconn.getResponseCode() == HttpURLConnection.HTTP_OK) {
 - Toast.makeText(getApplicationContext(), "连接Google Weather API成功!",
 - Toast.LENGTH_SHORT).show();
 - // InputStreamReader
 - InputStreamReader isr = new InputStreamReader(httpconn.getInputStream(), "utf-8");
 - int i;
 - String content = "";
 - // read
 - while ((i = isr.read()) != -1) {
 - content = content + (char) i;
 - }
 - isr.close();
 - //设置TextView
 - tv.setText(content);
 - }
 - //disconnect
 - httpconn.disconnect();
 - } catch (Exception e) {
 - Toast.makeText(getApplicationContext(), "连接Google Weather API失败", Toast.LENGTH_SHORT)
 - .show();
 - e.printStackTrace();
 - }
 - }
 - // 使用HttpCient连接GoogleWeatherAPI
 - protected void httpClientConn() {
 - //DefaultHttpClient
 - DefaultHttpClient httpclient = new DefaultHttpClient();
 - //HttpGet
 - HttpGet httpget = new HttpGet(googleWeatherUrl2);
 - //ResponseHandler
 - ResponseHandler<string> responseHandler = new BasicResponseHandler();
 - try {
 - String content = httpclient.execute(httpget, responseHandler);
 - Toast.makeText(getApplicationContext(), "连接Google Weather API成功!",
 - Toast.LENGTH_SHORT).show();
 - //设置TextView
 - tv.setText(content);
 - } catch (Exception e) {
 - Toast.makeText(getApplicationContext(), "连接Google Weather API失败", Toast.LENGTH_SHORT)
 - .show();
 - e.printStackTrace();
 - }
 - httpclient.getConnectionManager().shutdown();
 - }
 - }</string>
 
复制代码
4、
最后别忘了在AndroidManifest.xml中加入访问网络的权限,<uses-permission
android:name="android.permission.INTERNET"></uses-permission>5、
运行程序查看结果:

按第一个按钮的效果,返回的数据结果显示在了TextView里。

按第二个按钮的效果,返回的数据结果显示在了TextView里, 所不同的是显示的是中文。好了,本讲先到这里。
URLConnection和HttpClient使用入门的更多相关文章
- java学习-GET方式抓取网页(UrlConnection和HttpClient)
		
抓取网页其实就是模拟客户端(PC端,手机端...)发送请求,获得响应数据documentation,解析对应数据的过程.---自己理解,错误请告知 一般常用请求方式有GET,POST,HEAD三种 G ...
 - 《Android学习指南》目录
		
源:<Android学习指南>目录 Android学习指南的内容分类: 分类 描述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先看Android的课程,这 ...
 - 《Android学习指南》文件夹
		
转自:http://android.yaohuiji.com/about Android学习指南的内容分类: 分类 描写叙述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不 ...
 - 基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件[转]
		
上一篇文章介绍到怎么在自己的Java环境中搭建openfire插件开发的环境,同时介绍到怎样一步步简单的开发openfire插件.一步步很详细的介绍到简单插件开发,带Servlet的插件的开发.带JS ...
 - openfire:基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件
		
基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件 上一篇文章介绍到怎么在自己的Java环境中搭建openfire插件开发的环境,同时介绍到怎样一步步简单的开发openfir ...
 - 基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件
		
原文:http://www.cnblogs.com/hoojo/archive/2013/03/29/openfire_plugin_chatlogs_plugin_.html 随笔-150 评论- ...
 - 我的简历 PHP Java C# 技术总监
		
石先生 ID:303321266 目前正在找工作 13611326258 hr_msn@163.com 男|32 岁 (1985/08/06)|现居住北京-海淀区|12年工作经验 ...
 - java实现 HTTP/HTTPS请求绕过证书检测代码实现
		
java实现 HTTP/HTTPS请求绕过证书检测代码实现 1.开发需求 需要实现在服务端发起HTTP/HTTPS请求,访问其他程序资源. 2.URLConnection和HTTPClient的比较 ...
 - asp.net hessian + android hessdroid
		
做android开发时你还在为gson,json而人肉序列化与反序列化吗,上传文件时你还在使用UrlConnection或者HttpClient吗?下面提供了asp.net 服务端与 android ...
 
随机推荐
- VMware Coding Challenge: Removing Duplicates Entries
			
static LinkedListNode removeDuplicates(LinkedListNode list) { LinkedListNode cur = list; HashSet< ...
 - IO(File)
			
1. 一个File类的对象,表示了磁盘上的文件或目录 2. File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作 3. File对象可用来获取或处理与磁盘文件相关的信息,如:权限,时间,日期 ...
 - xmind使用教程思维导图
			
xmind使用教程思维导图 开始XMind旅程标记: 仅需2个快捷键 1 点击快捷键 创建同级主题 创建子主题 2 输入 选中主题后, 双击鼠标左键 或 单击空格键, 进入编辑状态. 3 其他内容 您 ...
 - Django框架----render函数和redirect函数的区别
			
render函数和redirect函数的区别: render:只会返回页面内容,但是未发送第二次请求 redirect:发挥了第二次请求,url更新 具体实例说明 render: redirect:
 - python之路----面向对象的继承特性
			
继承 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class ...
 - java程序初始化顺序
			
使用场景: 在java程序中,当实例化对象时,对象的所在类的所有成员变量首先要进行初始化,只有当所有类成员完成初始化后, 才会调用对象所在类的构造函数创建对象. 初始化的原则: (1)静态对象优先于 ...
 - Python Web学习笔记之GIL机制下的鸡肋多线程
			
为什么有人会说 Python 多线程是鸡肋?知乎上有人提出这样一个问题,在我们常识中,多进程.多线程都是通过并发的方式充分利用硬件资源提高程序的运行效率,怎么在 Python 中反而成了鸡肋? 有同学 ...
 - c++随机数及rand()的缺陷
			
c++生成随机整数和浮点数如下: #include <random> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { ...
 - nodejs 导出 exel文件 xlsx
			
参考: https://www.npmjs.com/package/node-xlsx Building a xlsx import xlsx from 'node-xlsx'; // Or var ...
 - CEF之CefSettings设置日志等级
			
CefSettings结构体允许定义全局的CEF配置,经常用到的配置项如下: single_process 设置为true时,Browser和Renderer使用一个进程.此项也可以通过命令行参数“s ...