Android发送GET与POST请求的DEMO详解

yizhihongxing

下面我将为你详细讲解“Android发送GET与POST请求的DEMO详解”这个主题,包括以下几个方面的内容:

  1. 什么是HTTP请求
  2. Android中发送HTTP请求的方式
  3. 完整示例:Android发送GET请求
  4. 完整示例:Android发送POST请求

什么是HTTP请求

HTTP(HyperText Transfer Protocol)是一种用于传输数据的协议,常用于万维网(WWW)上数据的传输。HTTP协议定义了浏览器和万维网服务器之间进行通信的规则,使得万维网能够进行通信和数据传输。

HTTP请求是指浏览器向服务器发出请求的过程,常用的请求方法有GET和POST。GET请求用于向服务器请求一份资源,并将其传输到客户端;POST请求则通常是向服务器提交表单数据,用于做数据的处理。

Android中发送HTTP请求的方式

在Android开发中,发送HTTP请求通常使用HttpURLConnection或HttpClient库,这些库都是Android SDK中自带的网络库。其中,HttpURLConnection具有简单易用、轻量级等特点,而HttpClient库则表现出更强大的定制性和兼容性。需要注意的是,从Android 6.0(API Level 23)开始,Android SDK已经不再推荐使用HttpClient库,所以我们在这里选择使用HttpURLConnection库进行示例介绍。

完整示例:Android发送GET请求

以下示例代码通过HttpURLConnection获取一个API的JSON数据,并使用Logcat将结果输出到控制台。

public class MainActivity extends AppCompatActivity {

    private static final String API_URL = "https://api.github.com/";

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

        // 创建新线程,发送GET请求
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL url = new URL(API_URL);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(5000);
                    connection.setReadTimeout(5000);

                    // 读取响应
                    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                    StringBuilder response = new StringBuilder();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        response.append(line);
                    }
                    reader.close();

                    // 将响应结果输出到控制台
                    Log.d("MainActivity", "Response: " + response.toString());
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

说明:

  1. 在主线程中无法进行网络请求操作,需要将网络请求操作放在新线程中;
  2. 通过URL类创建一个URL对象,传入API的URL地址;
  3. 调用openConnection()方法返回一个URLConnection对象;
  4. 将URLConnection强制转换为HttpURLConnection,以方便对HTTP请求进行配置;
  5. 设置HTTP请求方式为GET;
  6. 设置超时时间为5秒;
  7. 读取响应结果;
  8. 将响应结果转换为String类型,并通过Logcat输出。

完整示例:Android发送POST请求

以下示例代码通过HttpURLConnection向服务器提交表单数据,获取服务器响应的结果,并使用Logcat将结果输出到控制台。其中,我们使用了一个PHP脚本作为后台处理程序示例。

  1. PHP脚本代码:
<?php
    $username = $_POST["username"];
    $password = $_POST["password"];
    echo "username: " . $username . ", password: " . $password;
?>
  1. Android代码:
public class MainActivity extends AppCompatActivity {

    private static final String API_URL = "https://example.com/login.php";

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

        // 创建新线程,发送POST请求
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL url = new URL(API_URL);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("POST");
                    connection.setConnectTimeout(5000);
                    connection.setReadTimeout(5000);

                    // 构造请求体
                    String params = "username=admin&password=123456";
                    byte[] postData = params.getBytes("UTF-8");
                    int postDataLength = postData.length;

                    // 设置请求头
                    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                    connection.setRequestProperty("Content-Length", Integer.toString(postDataLength));

                    // 写入请求体
                    connection.setDoOutput(true);
                    DataOutputStream out = new DataOutputStream(connection.getOutputStream());
                    out.write(postData);
                    out.flush();
                    out.close();

                    // 读取响应
                    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                    StringBuilder response = new StringBuilder();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        response.append(line);
                    }
                    reader.close();

                    // 将响应结果输出到控制台
                    Log.d("MainActivity", "Response: " + response.toString());
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

说明:

  1. 通过URL类创建一个URL对象,传入API的URL地址;
  2. 调用openConnection()方法返回一个URLConnection对象;
  3. 将URLConnection强制转换为HttpURLConnection,以方便对HTTP请求进行配置;
  4. 设置HTTP请求方式为POST;
  5. 设置超时时间为5秒;
  6. 构造请求体(params);
  7. 将请求体转换为字节数组(postData);
  8. 获取请求体长度并设置请求头(Content-TypeContent-Length);
  9. 打开输出流,并将请求体写入输出流,然后关闭流;
  10. 读取响应结果;
  11. 将响应结果转换为String类型,并通过Logcat输出。

以上就是关于“Android发送GET与POST请求的DEMO详解”的完整攻略及示例说明,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android发送GET与POST请求的DEMO详解 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • 详解SpringBoot集成jsp(附源码)+遇到的坑

    接下来我将为你详细讲解 “详解SpringBoot集成jsp(附源码)+遇到的坑”的完整攻略,并且提供两条示例。 一、前言 SpringBoot的主要目标是简化Spring应用程序的开发以及部署。在实际开发中,我们常常需要集成jsp,但是SpringBoot默认情况下是不支持jsp的,需要我们进行特殊的配置,下面将详细讲解SpringBoot集成jsp的步骤…

    Java 2023年5月15日
    00
  • 手动实现将本地jar添加到Maven仓库

    在 Maven 中,本地 jar 包的依赖需要添加到 Maven 仓库中才能被项目引用。如果 jar 包不在中央仓库中,需要手动将其添加到本地仓库中。本地 jar 包添加到 Maven 仓库有两种方法:手动添加、使用 Maven 命令。 手动添加 手动添加是将本地 jar 包拷贝到指定 Maven 仓库的一个仓库目录中。 首先,找到 Maven 仓库的位置。…

    Java 2023年5月20日
    00
  • java简单实现数组中的逆序对

    实现思路 数组中的逆序对指的是,数组中所有的俩俩元素,如果前面的元素大于后面的元素,则它们就是一个逆序对。 具体实现思路如下: 遍历数组,对于每个元素, 在数组中找到比该元素小的所有元素,并记录其数量。可以使用嵌套循环实现。 假设当前元素为 a[i],a[i] 在数组中的位置为 index(a[i]),比 a[i] 小的元素在数组中的位置依次为 index(…

    Java 2023年5月26日
    00
  • JSP上传文件到指定位置实例代码

    下面我将详细讲解“JSP上传文件到指定位置实例代码”的完整攻略: 标题 JSP上传文件到指定位置实例代码 代码实现步骤 首先在 JSP 页面中使用 input 标签设置一个文件上传表单: <form action="upload.jsp" method="post" enctype="multipart…

    Java 2023年6月15日
    00
  • java线程池实现批量下载文件

    关于Java线程池实现批量下载文件,可以按照以下步骤进行: 1. 创建线程池 首先需要使用 Executors.newFixedThreadPool() 方法创建一个固定大小的线程池,例如: private static int THREAD_COUNT = 5; // 线程池大小 private static ExecutorService executo…

    Java 2023年5月19日
    00
  • 详解Spring Security 中的四种权限控制方式

    下面我将详细讲解“详解Spring Security 中的四种权限控制方式”: 1. 认证和鉴权 几乎所有的Spring Security权限控制都需要经过两个基本步骤:认证和鉴权。 认证(Authentication):指确定用户的身份,通常是用户提供用户名和密码给系统来验证其是否能够登录。 鉴权(Authorization):指确定用户是否有权限访问某些…

    Java 2023年5月20日
    00
  • java计算π的多种方法

    Java 计算 π 的多种方法 在计算机科学中,π(圆周率)是一个非常有趣且重要的数学常数。由于π是一个无理数,不能用有限长的小数表示,因此我们需要使用其他方法来近似计算π。本文将介绍几种 Java 中计算π的方法。 1. 蒙特卡罗方法 蒙特卡罗方法是一种基于随机抽样的数值计算方法。这个方法的基本思想是在一个正方形内随机放置若干个点,并且判断每个点是否在以正…

    Java 2023年5月19日
    00
  • SpringBoot Bean花式注解方法示例下篇

    请听我详细讲解“SpringBoot Bean花式注解方法示例下篇”的完整攻略。 概述 本文主要介绍在Spring Boot项目中常用的Bean注解及其用法,包括@Component、@Service、@Repository、@Controller、@Configuration、@Bean等。 @Component注解 @Component是最常用的注解之一…

    Java 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部