热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

URLConnection和HttpClient使用入门

本讲内容:URLConnection和HttpClient使用入门在Android中除了使用WebView控件访问网络以外,还有用代码方式访问网络的方法,代码方式有时候会显得更加灵活。
本讲内容:URLConnection和HttpClient使用入门
在 Android中除了使用WebView控件访问网络以外,还有用代码方式访问网络的方法,代码方式有时候会显得更加灵活。本讲会介绍使用 URLConnection对象和HttpClient组件访问网络的方法。而这两种方法和Java Web开发中的使用方式几乎没有区别,而Web开发的相关资料比比皆是,因此有兴趣的同学学完本讲之后可以专门去研究一下HttpClient4.0的内 容,以求更深入的学习。
一、分别使用URLConnection和HttpClient访问Google天气服务的例子
这个例子的的目的就是从Google哪里获取郑州的天气预报信息,并显示在TextView中,本讲只会把返回的XML数据显示出来,下一讲我们学XML解析的时候再把这个天气预报做成图文并茂的形式,所以大家先暂时忍耐一下丑陋的界面。
1、新建一个项目 Lesson30_HttpClient ,主Activity的文件名是 MainActivity.java
2、res/layout/main.xml的内容如下:










  1.        
  2.        

3、MainActivity.java的内容如下:
  1. package android.basic.lesson30;

  2. import java.io.InputStreamReader;
  3. import java.net.HttpURLConnection;
  4. import java.net.URL;

  5. import org.apache.http.client.ResponseHandler;
  6. import org.apache.http.client.methods.HttpGet;
  7. import org.apache.http.impl.client.BasicResponseHandler;
  8. import org.apache.http.impl.client.DefaultHttpClient;

  9. import android.app.Activity;
  10. import android.os.Bundle;
  11. import android.view.View;
  12. import android.widget.Button;
  13. import android.widget.TextView;
  14. import android.widget.Toast;

  15. public class MainActivity extends Activity {

  16.         TextView tv;

  17.         String googleWeatherUrl1 = "http://www.google.com/ig/api?weather=zhengzhou";
  18.         String googleWeatherUrl2 = "http://www.google.com/ig/api?hl=zh-cn&weather=zhengzhou";

  19.         /** Called when the activity is first created. */
  20.         @Override
  21.         public void onCreate(Bundle savedInstanceState) {
  22.                 super.onCreate(savedInstanceState);
  23.                 setContentView(R.layout.main);

  24.                 // 定义UI组件
  25.                 Button b1 = (Button) findViewById(R.id.Button01);
  26.                 Button b2 = (Button) findViewById(R.id.Button02);
  27.                 tv = (TextView) findViewById(R.id.TextView02);

  28.                 // 设置按钮单击监听器
  29.                 b1.setOnClickListener(new View.OnClickListener() {
  30.                         @Override
  31.                         public void onClick(View v) {
  32.                                 // 使用URLConnection连接GoogleWeatherAPI
  33.                                 urlConn();
  34.                         }
  35.                 });

  36.                 // 设置按钮单击监听器
  37.                 b2.setOnClickListener(new View.OnClickListener() {
  38.                         @Override
  39.                         public void onClick(View v) {
  40.                                 // 使用HttpCient连接GoogleWeatherAPI
  41.                                 httpClientConn();

  42.                         }
  43.                 });

  44.         }

  45.         // 使用URLConnection连接GoogleWeatherAPI
  46.         protected void urlConn() {

  47.                 try {
  48.                         // URL
  49.                         URL url = new URL(googleWeatherUrl1);
  50.                         // HttpURLConnection
  51.                         HttpURLConnection httpcOnn= (HttpURLConnection) url.openConnection();

  52.                         if (httpconn.getResponseCode() == HttpURLConnection.HTTP_OK) {
  53.                                 Toast.makeText(getApplicationContext(), "连接Google Weather API成功!",
  54.                                                 Toast.LENGTH_SHORT).show();
  55.                                 // InputStreamReader
  56.                                 InputStreamReader isr = new InputStreamReader(httpconn.getInputStream(), "utf-8");
  57.                                 int i;
  58.                                 String cOntent= "";
  59.                                 // read
  60.                                 while ((i = isr.read()) != -1) {
  61.                                         cOntent= content + (char) i;
  62.                                 }
  63.                                 isr.close();
  64.                                 //设置TextView
  65.                                 tv.setText(content);
  66.                         }
  67.                         //disconnect
  68.                         httpconn.disconnect();

  69.                 } catch (Exception e) {
  70.                         Toast.makeText(getApplicationContext(), "连接Google Weather API失败", Toast.LENGTH_SHORT)
  71.                                         .show();
  72.                         e.printStackTrace();
  73.                 }
  74.         }

  75.         // 使用HttpCient连接GoogleWeatherAPI
  76.         protected void httpClientConn() {
  77.                 //DefaultHttpClient
  78.                 DefaultHttpClient httpclient = new DefaultHttpClient();
  79.                 //HttpGet
  80.                 HttpGet httpget = new HttpGet(googleWeatherUrl2);
  81.                 //ResponseHandler
  82.                 ResponseHandler respOnseHandler= new BasicResponseHandler();

  83.                 try {
  84.                         String cOntent= httpclient.execute(httpget, responseHandler);
  85.                         Toast.makeText(getApplicationContext(), "连接Google Weather API成功!",
  86.                                         Toast.LENGTH_SHORT).show();
  87.                         //设置TextView
  88.                         tv.setText(content);
  89.                 } catch (Exception e) {
  90.                         Toast.makeText(getApplicationContext(), "连接Google Weather API失败", Toast.LENGTH_SHORT)
  91.                         .show();
  92.                         e.printStackTrace();
  93.                 }
  94.                 httpclient.getConnectionManager().shutdown();
  95.         }
  96. }
4、 最后别忘了在AndroidManifest.xml中加入访问网络的权限,5、 运行程序查看结果:
  
按第一个按钮的效果,返回的数据结果显示在了TextView里。
  
按第二个按钮的效果,返回的数据结果显示在了TextView里, 所不同的是显示的是中文。好了,本讲先到这里。

推荐阅读
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 今天就跟大家聊聊有关怎么在Android应用中实现一个换肤功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根 ... [详细]
  • 2021年最详细的Android屏幕适配方案汇总
    1Android屏幕适配的度量单位和相关概念建议在阅读本文章之前,可以先阅读快乐李同学写的文章《Android屏幕适配的度量单位和相关概念》,这篇文章 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • android ... [详细]
  • 近来有一个需求,是需要在androidjava基础库中插入一些log信息,完成这个工作需要的前置条件有编译好的android源码具体android源码如何编译,这 ... [详细]
  • 在一对一直播源码使用过程中,有时会出现软键盘切换闪屏问题,就是当切换表情的时候屏幕会跳动,因此要对一对一直播源码表情面板无缝切换进行优化。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • 【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup
    【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup ... [详细]
  • 1、不要使用国内第三方加固2、去掉android:debuggable”true”,不然会报一下错误,特别注意使用了一些第三方SDK,例如ShareSDKUploadfailedY ... [详细]
author-avatar
小甜甜小小郭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有