Android入门--Http网络操作

本文详细介绍了Android中通过HttpURLConnection和HttpClient进行网络操作的基本步骤,包括GET和POST方法的使用,强调了网络操作必须在子线程中进行,以及在网络请求中设置相关属性、读取数据的方法。通过实例代码展示了如何新建项目、添加权限、创建连接、发送请求、接收响应等内容,是Android入门网络操作的实用教程。
摘要由CSDN通过智能技术生成

这两天因为项目需要,和后台服务器打交道比较多,包括向服务器端发送数据,接收来自服务器端的数据,所以会用到一些网络操作相关的知识,接下来就简单总结下Http网络操作的相关知识,并记录在实际操作过程中遇到的一些错误,方便以后总结复习

Android中网络操作的方式主要是Scoket方式和Http方式,关于Scoket方式和http方式的比较,见服务器和客户端的交互方式(Socket,http协议)和各自特点和适用范围

通过Http协议实现网络操作有两种选择:

  1. 使用java的标准库URLConnection(java.net.URLConnection)中的HttpURLConnection:

  2. 使用apache 的开源框架httpClient(org.apache.http.client),HttpClient是基于URLConnection的一个封装,增加了很多方便使用的API。

下面是整理的结构图:
这里写图片描述

通过HttpURLConnection实现网络操作

使用GET方法的实例

1.新建一个Android项目, 在AndroidManifest.xml文件中添加网络操作相关权限:

 <uses-permission android:name="android.permission.INTERNET"/>

2.在MainActivity.java中创建一个String类型常量myURL用于存放URL地址:

private final String myURL="http://www.ibookpa.com/mobileFilter?action=login";

这里的URL地址,就根据自己的实际情况来写,我这里使用的是他们写好的一个地址,用于传输一个json格式数据,用浏览器打开这个链接的效果如下:
这里写图片描述
也就是说我通过这个URL链接,将获取到这一串json数据

3.新建一个线程类重写其run方法

这里需要注意的是,Android中所有的网络操作都不能直接在MainThread中进行,必须在其他线程中执行网络相关操作:

private class myThread extends Thread {
   
        @Override
        public void run() {
            super.run();
        }
    }

4.在run方法中新建URL类的对象

传入一个字符串类型参数,这里的参数可以是定义好的URL地址,也可以是构造出来的地址,灵活性很大,本例中是使用定义好的URL地址:myURL

    private class myThread extends Thread {
   
        @Override
        public void run() {
            super.run();
            try {
                URL url = new URL(myURL);

            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
        }
    }

5.创建HttpURLConnection类的对象,用于获取通过URL得到的网络连接:

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

6.通过inputStream得到输入流

可以有很多方式,这里使用BufferedReader来获取输入流:

InputStream is = conn.getInputStream();

BufferedReader br = new  BufferedReader(new InputStreamReader(is));

7.接下来就是获取输入流

通过循环读取BufferedReader中的内容,来赋值给一个String类型的变量,就能实现获取输入流中的String类型数据:

String result = "";
String res = null;
while ((res = br.readLine()) != null) {
        result += res;
    }
System.out.println("-->result : " + result);

8. 最后,记得关闭BufferedReader,InputStream和HttpURLConnection:

br.close();
is.close();
conn.disconnect();

9. 最最后,在onCreate()方法中实例化线程类,并运行:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new myThread().start();
    }

以上,完整代码如下:

package com.example.urlconnection_test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import android.os.Bundle;
import android.app.Activity;

public class MainActivity extends Activity {
   
    private final String myURL = "http://www.ibookpa.com/mobileFilter?action=login";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new myThread().start();//启动线程,进行网络操作
    }

    private 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值