Android网络开发之HttpURLConnection

2024-05-31 18:32

本文主要是介绍Android网络开发之HttpURLConnection,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

HttpURLConnection 继承了URLConnection,可以向指定网站发送GET请求、POST请求。

int getResponseCode( ):获取服务器的响应代码

String getResponseMessage( ):获取服务器的响应消息

String getRequestMethod( ):获取发送请求的方法

void setRequestMthod(String method):实现多线程下载

post方法实例

public static String Dopost(String stringUrl) {
StringBuffer sb = new StringBuffer();
String result = null;
try {
//创建URL对象
URL url=new URL(stringUrl);
//打开Http协议,连接网络
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
//设置链接超时时间
connection.setConnectTimeout(1000);
//设置读取输入流读取超时时间
connection.setReadTimeout(1000);
//使用POST方法必须设置下面两个函数
connection.setDoInput(true);
connection.setDoOutput(true);
//设置发送请求的方法为POST,不设置的话,默认为get
connection.setRequestMethod(“POST”);
connection.setUseCaches(false);
//获取输入流对象
InputStream is = connection.getInputStream();
//把输入流变成字符流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line=br.readLine();
while (line != null) {
sb.append(line);
//读取下一行数据
line = br.readLine();
}
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//判断是否包含"weather_callback"字符串,如果包含,就获取其中的Json字符串{}包裹的数据
if(sb.toString().contains(“weather_callback”)) {
result = sb.toString().substring(sb.toString().indexOf(“(”) +1, sb.toString().indexOf(“)”));
}

return result;
}

get方法

public static String doGet(String uriString) {
//创建缓存字符串对象
StringBuffer sb = new StringBuffer();
//定义一个结果字符串对象
String result = null;
Log.i(“TAG”, "uriString = " +uriString);

try {
//把uriString字符串变成URL对象
URL url = new URL(uriString);
//打开Http协议,连接网络
HttpURLConnection connect = (HttpURLConnection) url.openConnection();
//设置链接超时时间
connect.setConnectTimeout(101000);
//设置读取输入流读取超时时间
connect.setReadTimeout(10
1000);
//获取输入流对象
InputStream is = connect.getInputStream();
//把输入流变成字符流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//读取数据
String line = br.readLine();
while (line != null) {
sb.append(line);
//读取下一行数据
line = br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}

//判断是否包含"weather_callback"字符串,如果包含,就获取其中的Json字符串{}包裹的数据
if(sb.toString().contains(“weather_callback”)) {
result = sb.toString().substring(sb.toString().indexOf(“(”) +1, sb.toString().indexOf(“)”));
}

return result;
}

在连接服务器前一般要判断网络情况

/**

  • 判断网络是否联通
  • ConnectivityManager是网络连接相关的管理器,它主要用于查询网络状态并在网络发生改变时发出状态变化通知。这个类主要负责的下列四个方面:
    1. 监控网络状态(包括WiFi, GPRS, UMTS等)。
    1. 当网络连接改变时发送广播Intent。
    1. 当一种网络断开时,试图连接到另一种网络进行故障处理。
    1. 提供一系列接口让应用程序查询可获得的网络的粗粒度和细粒度状态。
      */
      public static boolean isNetworkConn(Context context) {
      ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
      // NetworkInfo是一个描述网络状态的接口,
      //可通过ConnectivityManager调用getActiveNetworkInfo()获得当前连接的网络类型。
      NetworkInfo info = manager.getActiveNetworkInfo();
      if(info == null) {
      return false;
      }else {
      return info.isConnected();
      }
      }

这篇关于Android网络开发之HttpURLConnection的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1018710

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio