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

下面我将为你详细讲解“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日

相关文章

  • Java基于IDEA实现http编程的示例代码

    Java基于IDEA实现HTTP编程的示例代码攻略主要分为以下几个步骤: 步骤一:导入依赖 首先需要在项目中导入 httpclient 依赖包。在 pom.xml 文件中添加以下依赖: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifac…

    Java 2023年5月19日
    00
  • Spring Boot+微信小程序开发平台保存微信登录者的个人信息

    好的。本文将详细介绍如何使用Spring Boot和微信小程序开发平台来保存微信登录者的个人信息。 1. 创建小程序应用 在开始之前,你需要先申请一个微信小程序应用,具体操作请参考微信小程序官方文档。 2. 配置微信小程序开发平台 在微信小程序开发平台中配置小程序的信息。其中,需要配置小程序的 AppID 和 App Secret ,以及配置小程序的登录授权…

    Java 2023年5月20日
    00
  • 使用Spring源码报错java:找不到类 InstrumentationSavingAgent的问题

    针对“使用Spring源码报错java:找不到类 InstrumentationSavingAgent的问题”,我们可以采取以下步骤进行排查和解决。 1. 确定报错原因 在编译或运行代码过程中,如果出现了类找不到的问题,有可能是因为该类被成功编译但在运行时无法被找到。针对这种情况,我们需要先明确报错原因。 通过查看报错提示信息,判断问题是否出在Spring源…

    Java 2023年5月19日
    00
  • 常见的Java诊断工具有哪些?

    常见的Java诊断工具包括以下几类: 1. JVM监控工具 这类工具主要是对Java虚拟机进行监控,例如查看程序运行时的内存情况、线程情况等。 示例使用 jstat 工具 jstat能够监控JVM中的各种指标,例如 HeapSize、Class装载信息、GC情况、线程运行情况等等。以下是使用 jstat 命令来查看 heap usage 的示例: jstat…

    Java 2023年5月11日
    00
  • Java中求最大值的4种方法实例代码

    下面是关于“Java中求最大值的4种方法实例代码”的详细攻略,希望能对您有所帮助。 1、方法一:使用for循环的求最大值 这种方法非常简单直接,使用for循环遍历数组,记录数组中的最大值即可。以下是示例代码: public static int getMaxNum(int[] arr) { int max = arr[0]; for(int i=1;i&lt…

    Java 2023年5月26日
    00
  • Spring与Web整合实例

    针对“Spring与Web整合实例”的完整攻略,我将从以下几个方面进行详细讲解: 环境搭建 Spring与Web整合配置 示例展示 一、环境搭建 在进行Spring与Web整合的实例之前,需要先搭建好相应的环境,主要包括以下几个方面: JDK环境的安装与配置 Tomcat服务器的安装与配置 Maven工具的安装与配置 Spring框架与Spring MVC组…

    Java 2023年5月19日
    00
  • js实现窗口全屏示例详解

    首先,实现网页全屏有两种方式:一种是使用原生JavaScript,另一种是使用第三方库。 使用原生JavaScript实现窗口全屏 function fullscreen() { var elem = document.documentElement; if (elem.requestFullscreen) { elem.requestFullscreen(…

    Java 2023年5月23日
    00
  • 你知道Java的这些骚操作吗?

    当然,没问题! 你知道Java的这些骚操作吗? 1. 位运算 位运算是一种直接对二进制位进行操作的运算,通常用于系统底层开发和优化计算速度。Java内置了多种位运算符,具体有: 按位与(&) 按位或(|) 按位异或(^) 取反(~) 左移位(<<) 右移位(>>) 无符号右移位(>>>) 示例 int a =…

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