android网络应用开发详解

Android网络应用开发,主要有两种方式,一种是socket(是对tcp/udp协议的封装),另外一种就是使用Http协议,Android中主要提供了两种方式,HttpURLConnection和Apache HttpClient。下面对Android网络应用开发进行具体的阐述。

一、基于socket的网络通信

socket是为了网络服务提供的一种机制。通信的两端都是socket。

网络通信其实就是socket间的通信。

数据在两个socket间进行io传输。

1、基于udp的socket编程步骤

定义码头
即:定义一个DatagramSocket对象ds

定义可以用来接收或者发送数据的集装箱
即:定义DatagramPacket对象dp

在码头上用集装箱接受对象发送过来的数据(ds.receive(dp))

关闭码头(ds.close())

2、基于tcp的socket编程步骤

二、基于http协议的网络通信

1、HttpURLConnection

JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。HttpURLConnection是java的标准类,HttpURLConnection继承自URLConnection,可用于向指定网站发送GET请求、POST请求。

下面是一个使用HttpURLConnection类的get请求访问网络的工具类:

 path是url字符串
     * InputStream
     */
      InputStream (String path) {
        URL url = ;
         {
            url =  URL(path);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();

            conn.setRequestMethod();

            conn.setConnectTimeout();

            conn.setDoInput();

             (conn.getResponseCode() == ) {

                InputStream in = conn.getInputStream();
                 in;
            }
        }  (MalformedURLException e) {

            e.printStackTrace();
        }  (IOException e) {

            e.printStackTrace();
        }
         ;
    }

2、Apache HttpClient

HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

httpClient就是一个增强版的HttpURLConnection,HttpURLConnection可以做的事情HttpClient全部可以做;HttpURLConnection没有提供的有些功能,HttpClient也提供了,但它只是关注于如何发送请求、接收响应,以及管理HTTP连接。

下面是使用httpClient get方式访问网络的工具类:

     stream
     *
     */
      [] (InputStream stream)  IOException{
        [] ret = ;
        ByteArrayOutputStream bout =  ByteArrayOutputStream();
        [] buf =  [];
         len;
         () {
            len = stream.read(buf);
             (len == -) {
                ;
            }
            bout.write(buf, , len);
        }

        buf = ;
        ret = bout.toByteArray();
        bout.close();
         ret;
    }

     url 网址
     *
     */
      [] (String url) {
        [] ret = ;
        HttpGet request =  HttpGet(url);
        HttpClient client =  DefaultHttpClient();
         {
            HttpResponse response = client.execute(request);
            StatusLine statusLine = response.getStatusLine();
             statusCode = statusLine.getStatusCode();
             (statusCode == ) {
                HttpEntity entity = response.getEntity();
                InputStream stream = entity.getContent();

                ret = readStream(stream);
                stream.close();
            }
        }  (IOException e) {
            e.printStackTrace();
        }
         ret;
    }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索httpclient
, 协议
, httpurlconnection
, android网络
, httpget请求
, android http协议
, inputstream
, stream
, httpentity
, android网络请求
, android开发网络
, socket通信android
, android socket数据网络
协议socket通信android
android应用开发详解、android网络应用开发、android项目开发详解、android游戏开发详解、android 邮箱开发详解,以便于您获取更多的相关知识。

时间: 2024-11-02 23:13:27

android网络应用开发详解的相关文章

android应用开发详解里的一个例子

问题描述 android应用开发详解里的一个例子 我导入的书上例子可以运行,照着书打进去的代码就不能运行,同样从例子里面复制过来的代码也不能运行,MainActivity可以显示,但是点击register后跳转的ResultActivity就不能显示,模拟器弹出has stopped字样,求解答 以下是代码 package com.amaker.test; import android.app.Activity; import android.content.Intent; import and

《Android游戏开发详解》一2.20 对象的更多实践——模拟一个色子

2.20 对象的更多实践--模拟一个色子 Android游戏开发详解 在我们的下一个项目中,将模拟一个六面色子的滚动.色子会出现在许多现代的桌上游戏中,因为它们增添了不可预期的因素,如图2-26所示.在本节中,我们将展示在Java程序中如何模拟这种随机性. 我们首先创建一个名为"DiceProject"的新的Java项目.其中,创建一个名为DiceMaker的新的类,并且像通常一样给它一个main方法. 要产生一个随机数,我们必须使用Java库中名为Random的一个内建类.我们使用熟

《Android游戏开发详解》——第2章,第2.20节对象的更多实践——模拟一个色子

2.20 对象的更多实践--模拟一个色子 Android游戏开发详解 在我们的下一个项目中,将模拟一个六面色子的滚动.色子会出现在许多现代的桌上游戏中,因为它们增添了不可预期的因素,如图2-26所示.在本节中,我们将展示在Java程序中如何模拟这种随机性. 我们首先创建一个名为"DiceProject"的新的Java项目.其中,创建一个名为DiceMaker的新的类,并且像通常一样给它一个main方法. 要产生一个随机数,我们必须使用Java库中名为Random的一个内建类.我们使用熟

《Android游戏开发详解》——第1章,第1.3节声明和初始化变量

1.3 声明和初始化变量 Android游戏开发详解 所有的基本数据类型(和字符串)都可以表示为变量.它们都是使用相同的基本语法来声明(创建)的. 创建一个新的变量的时候,我们总是要声明两件事情:变量的数据类型(data type)和变量的名称(variable name).在大多数情况下,我们还使用赋值运算符(assignment operator,即=)给变量指定一个初始值.有两种方法做到这点.第一种方法是指定一个字面值(literal value),例如,图1-1所示的'J'.第二种方法是

《Android游戏开发详解》一2.5 魔术揭秘——编译器和JVM

2.5 魔术揭秘--编译器和JVM Android游戏开发详解 在我们点击运行按钮和出现"Hello, world-?"之间,发生了什么事情.不管你是否相信,所有的事情都是在幕后进行的.当我们编写源代码的时候,Java编译器会编译它,这意味着,它会检查代码潜在的错误并将其转换为只有机器能够理解的语言.这个机器,就是执行代码并把想要的文本打印到控制台的Java虚拟机(Java Virtual Machine,JVM).如图2-18所示. JVM是一个虚拟的机器.它运行于操作系统之上,并且

《Android游戏开发详解》一2.2 设置开发机器

2.2 设置开发机器 Android游戏开发详解 在开始编写简单点的Java程序和构建令人兴奋的游戏之前,我们必须在自己的机器上安装一些软件.然而,这个过程有点枯燥且颇费时间,但是,为了让第一个程序开始运行,这些代价都是值得的. 2.2.1 安装Eclipse 我们将利用一个集成开发环境(Integrated Development Environment,IDE)来编写Java/Android应用程序.IDE是一种工具的名称,它能够帮助我们轻松地编写.构建和运行程序. 我们将要使用的IDE叫作

《Android游戏开发详解》——第2章,第2.2节设置开发机器

2.2 设置开发机器 Android游戏开发详解 在开始编写简单点的Java程序和构建令人兴奋的游戏之前,我们必须在自己的机器上安装一些软件.然而,这个过程有点枯燥且颇费时间,但是,为了让第一个程序开始运行,这些代价都是值得的. 2.2.1 安装Eclipse 我们将利用一个集成开发环境(Integrated Development Environment,IDE)来编写Java/Android应用程序.IDE是一种工具的名称,它能够帮助我们轻松地编写.构建和运行程序. 我们将要使用的IDE叫作

《Android游戏开发详解》——第1章,第1.7节控制流程第1部分——if和else语句

1.7 控制流程第1部分--if和else语句 Android游戏开发详解 我们现在把注意力转向控制流程(control flow ,也称为流程控制,flow control),这指的是代码行将要按照什么样的顺序执行.还记得代码执行的基本规则吧,它是说代码要从上到下地执行.在最简单的程序中,代码真的是按照线性方式从上向下执行的.然而,在任何有用的程序中,我们可能会看到,根据某些条件,会跳过一些代码行甚至重复执行一些代码行.让我们来看一些例子. 1.7.1 if-else语句块 if-else语句

《Android游戏开发详解》一1.7 控制流程第1部分——if和else语句

1.7 控制流程第1部分--if和else语句 Android游戏开发详解 我们现在把注意力转向控制流程(control flow ,也称为流程控制,flow control),这指的是代码行将要按照什么样的顺序执行.还记得代码执行的基本规则吧,它是说代码要从上到下地执行.在最简单的程序中,代码真的是按照线性方式从上向下执行的.然而,在任何有用的程序中,我们可能会看到,根据某些条件,会跳过一些代码行甚至重复执行一些代码行.让我们来看一些例子. 1.7.1 if-else语句块 if-else语句