Android中HttpURLConnection类使用介绍

Http协议的认识:

Android中发送http网络请求是很常见的,要有GET请求和POST请求。一个完整的http请求需要经历两个过程:客户端发送请求到服务器,然后服务器将结果返回给客户端。

GET表示希望从服务器那里获取数据,而POST则表示希望提交数据给服务器。

通过Http访问网络的三个步骤:

1、发送http请求

2、接受服务响应

3、解析返回数据

HttpURLConnection类位于java.net包中,它用于发送HTTP请求和获取HTTP响应。

话不多说,直接上代码:

首先创建一个安卓项目。在xml中编写如下代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="获取"
        />
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        <TextView
            android:id="@+id/response"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </ScrollView>
</LinearLayout>

ScrollView是可供用户滚动的层次结构布局容器,允许显示比实际多的内容,借助ScrollView控件,我们就可以以滚动的形式查看屏幕外的那部分内容。

上面的代码主要是实现,当点击按钮时,下面的滚动视图将展示其内容。

在java中编写如下代码:

public class MainActivity extends AppCompatActivity {
   TextView response;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button=(Button)findViewById(R.id.button);
        response=(TextView)findViewById(R.id.response);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            URL url=new URL("http://www.baidu.com");
                            HttpURLConnection connection=(HttpURLConnection)url.openConnection();
                            connection.setRequestMethod("GET");
                          InputStream inputStream=connection.getInputStream();
                          BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
                          StringBuilder stringBuilder=new StringBuilder();
                          String Line;
                          while ((Line=reader.readLine())!=null){
                              stringBuilder.append(Line);
                          }
                          show(stringBuilder);
                        } catch (MalformedURLException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        });
    }
    private void show(final StringBuilder stringBuilder) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                response.setText(stringBuilder);
            }
        });
    }
}

首先需要获取到HttpURLConnection的实例,一般只需new出一个URL对象,并传入目标的网络地址,然后调用一下openConnection()方法即可,如下所示:

   URL url=new URL("http://www.baidu.com");
                            HttpURLConnection connection=(HttpURLConnection)url.openConnection();

在得到了HttpURLConnection的实例后,我们可以设置一下HTTP请求所使用的方法。常用的方法主要有两个:GET和POST。GET表示希望从服务器那里获取数据,而POST则表示希望提交数据给服务器。写法如下:

connection.setRequestMethod(“GET”);

之后在调用getInputStream()方法就可以获取到服务器返回的输入流了,剩下的任务就是对输入流进行读取。

最后别忘了在AndroidManifest.xml中声明一下网络权限和添加如下代码(不加就会有错误):

android:usesCleartextTraffic="true"

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.http4">
<uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:usesCleartextTraffic="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

效果图如下所示:

到此这篇关于Android中HttpURLConnection类使用介绍的文章就介绍到这了,更多相关Android HttpURLConnection内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android使用HttpURLConnection实现网络访问流程

    目录 一.管理网络状态 二.HTTP协议 三.HttpURLConnection 四.GET和POST请求方式 五.做个实验 一.管理网络状态 使用网络进行数据通信前,需要先获取网络状态. 使用ConnectivityManager获取网络状态步骤: 1.获取ConnectivityManager对象 2.获取当前活动的网络NetworkInfo对象 3.判断当前网络状态是否为连接状态 4.在AndroidMainfest.xml中添加访问当前网络状态权限 //使用ConnectivityMan

  • Android基于HttpUrlConnection类的文件下载实例代码

    废话不多说了,直接给大家贴代码了,具体代码如所示: /** * get方法的文件下载 * <p> * 特别说明 android中的progressBar是google唯一的做了处理的可以在子线程中更新UI的控件 * * @param path */ private void httpDown(final String path) { new Thread() { @Override public void run() { URL url; HttpURLConnection connectio

  • Android中CountDownTimer类详解

    一.概述 项目中经常用到倒计时的功能,比如说限时抢购,手机获取验证码等等.而google官方也帮我们封装好了一个类:CountDownTimer,使我们的开发更加方便: 二.API CountDownTimer是一个抽象类,有两个抽象方法,它的API很简单 public abstract void onTick(long millisUntilFinished);//这个是每次间隔指定时间的回调,millisUntilFinished:剩余的时间,单位毫秒 public abstract voi

  • Android中Binder IPC机制介绍

    目录 前言 一.Binder是什么? 二.为什么要使用Binder 三.IPC机制原理 传统IPC机制如何实现跨进程通信 Binder IPC机制原理 小结 前言 记得刚开始做Andorid那会,面试时最怕被问到Binder,就感觉战战兢兢不知道从什么地方说起,导致后来一直有一种恐惧感.当然现在没有这种感觉了,但是这块知识点一直模模糊糊的,最近在学Andorid framework课程,借此机会简单总结下其中Binder相关知识点. 一.Binder是什么? Binder是Android中一种进

  • Android中ListView使用示例介绍

    目录 一.具体思路 1.创建Listview控件 3.写入 4.读取 5.创建对象,构造器,GETSET方法 二.具体实施 1.适配器 2.数据库 3.对象 4.等等等等 三.案例分享 activity_main.xml listitem.xml MyDatabaseHelper.java MainActivity.java Employee.java 简单ListView实例 数据库读取数据存入ListView 一.具体思路 1.创建Listview控件 2.创建子布局 创建数据库 主方法调用

  • Android中Activity组件实例介绍

    目录 Activity 概述 启动 Activity 的两种情况 关闭 Activity 总结 Activity 概述 在 Android 应用中,提供了 4 大基本组件,分别是 Activity.Service.BroadcastReceiver 和 ContentProvider.而 Activity 是 Android 应用最常见的组件之一.Activity 的中文意思是活动.在 Android 中,Activity 代表手机或者平板电脑中的一屏,它提供了和用户交互的可视化界面.在一个 A

  • Android 中的类文件和类加载器详情

    目录 一.Java中的类加载器 二.Android中的类加载器 2.1 BootClassLoader 2.2 PathClassLoader 2.3 DexClassLoader 2.4 InMemoryDexClassLoader 三.Dex文件 3.1 Android内存中的Dex文件 3.2 Dex文件的生成 一.Java中的类加载器 首先花点时间回顾一下Java中的三种类加载器: BootStrap ClassLoader 启动类加载器,它是实现自C/C++的类加载器,用于加载JDK的

  • android中Handle类的用法实例分析

    本文实例讲述了android中Handle类的用法.分享给大家供大家参考.具体如下: 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉.Handler就是把这些功能放到一个单独的线程里执行,与Activity互不影响. 当用户点击一个按钮时如果执行的是一个常耗时操作的话,处理不好会导致系统假死,用户体验很差,而Android则更进一步,如果任意一个Ac

  • Java中ArrayList类详细介绍

    Java中ArrayList类详细介绍 ArrayList是一个可变长度数组,它实现了List接口,因此它也可以包含重复元素和Null元素,也可以任意的访问和修改元素,随着向 ArrayList 中不断添加元素,其容量也自动增长.不过ArrayList是非同步(同步的意思是如果多个线程同时访问一个实例,任何一个线程对实例做了修改之后,其他线程所访问到的实例应该是修改过的最新的实例)的, 我们经常使用List list = Collections.synchronizedList(new Arra

  • Android中TelephonyManager类的方法实例分析

    本文实例讲述了Android中TelephonyManager类的方法.分享给大家供大家参考.具体如下: TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法.其中包括手机SIM的状态和信息.电信网络的状态及手机用户的信息.在应用程序中可以使用这些get方法获取相关数据. TelephonyManager类的对象可以通过Context.getSystemService(Context.TELEPHONY_SERVICE)方法来获得,需要注意的是有些通讯

  • Android中TelephonyManager类的用法案例详解

    本文以案例形式分析了Android中TelephonyManager类的用法.分享给大家供大家参考.具体如下: 目录结构: main.xml布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="ve

随机推荐