Android 应用程序开发和 Web 服务器交互

2023-12-08

我刚刚学习 Android 开发,所以如果这本质上有点不对劲,请原谅。 我想制作一个与我的网站上的数据库交互的应用程序,从某种意义上说,这两件事将互为补充。就这样。我正在尝试找出与服务器交互的最佳方式。我不想要一个在类似浏览器的环境中的应用程序,我想开发一个完整的应用程序,该应用程序独立于仅共享数据库和类似功能的网站工作。那么我最好的方法是什么?

正在构建应用程序,以便它可以发布/获取服务器上的 php 文件,基本上通过 JSON/XML 进行交互,这是我最好和/或最安全的选择,或者是否有更好的方法将应用程序连接到服务器数据库,不需要我打开数据库到任何发出请求的IP。

只是在这里寻求意见和建议。我想每个看到这篇文章的人都熟悉 Android 开发和最佳实践,我也已经浏览过博客和其他所有内容,但关于哪个最好的观点似乎是 50/50。


我确信 Android 上有一些库可以帮助您进行 HTTP Get 和 Post,但是,如果您真的想了解正在发生的事情,那么您只需了解几个类即可自己创建必要的类。

首先,了解 HttpClient、HTTPGet、HTTPPost 和 HTTPResponse。 Android 的一些更高版本也有一些不错的其他类,但这四个类几乎是您入门所需的全部。

你需要做这样的事情:

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://www.myurl.com/api_name");
HttpResponse response = client.execute(request);

如果您对此进行调试(当然使用真实的 URL),您会注意到您的应用程序在 client.execute() 期间冻结了。这是请求实际触发并且应用程序正在等待响应的时间点。一旦您实际得到响应,从中获取数据并不困难。

一旦理解了这一点,您就会想要了解 AsyncTask,它对于执行后台任务非常有用。您可以在这里找到文档:http://developer.android.com/reference/android/os/AsyncTask.html顶部有一个很好的例子说明如何使用它。

结合使用这两个概念,您可以执行异步 HTTP 请求。基本上,将实际的 HTTP 执行代码放在 AsyncTask 的 doInBackground 中。在 doInBackground 结束时返回您的响应,然后在 AsyncTask 的 onPostExecute 中对数据执行您想要的操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 应用程序开发和 Web 服务器交互 的相关文章

  • 从响应中获取标头(Retrofit / OkHttp 客户端)

    我正在使用 Retrofit 与 OkHttp 客户端和 Jackson 进行 Json 序列化 并希望获取响应的标头 我知道我可以扩展 OkClient 并拦截它 但这发生在反序列化过程开始之前 我基本上需要的是获取标头以及反序列化的 J
  • 如何在android中显示保存在sdcard文件夹中的图像[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 当我正在显
  • 按下按钮时应用不同的样式

    有没有办法在按下按钮时将样式应用于按钮 如果我有一种风格样式 xml
  • Android WebView里面的ScrollView只滚动scrollview

    在我的应用程序中 我有一个 ScrollView 其中包含一些线性视图 一些文本视图和一个 Webview 然后是其他线性布局等 问题是 WebView 不滚动 Scroll 仅侦听 ScrollView 有什么建议么
  • 通过 WhatsApp 发送消息

    由于我发现了一些较旧的帖子 表明 Whatsapp 不支持此功能 我想知道是否发生了变化 以及是否有办法打开与我通过意图发送的号码进行 Whatsapp 聊天 UPDATE请参阅https faq whatsapp com en andro
  • 自定义首选项中的android首选项水平分隔线?

    我创建了自己的自定义首选项对象来扩展首选项 我创建它们只是因为这些自定义数据类型没有首选项 一切正常 但我的自定义首选项没有相同的外观 因为它们缺少系统首选项对象具有的水平分隔线 我已经查找了创建水平分隔线的代码 但我找不到它是在哪里完成的
  • 如何重定向到 instagram://user?username={username}

    我的 html 页面上有这个链接 可以在特定用户上打开 Instagram 应用程序 a href Link to Instagram Profile a 我一直在寻找自动运行 url instagram user username USE
  • 以编程方式将文本颜色设置为主要 Android 文本视图

    如何设置我的文本颜色TextView to android textColorPrimary以编程方式 我已经尝试了下面的代码 但它将 textColorPrimary 和 textColorPrimary Inverse 的文本颜色始终设
  • java.lang.IllegalStateException:应用程序 PagerAdapter 更改了适配器的内容,而没有调用 PagerAdapter#notifyDataSetChanged android

    我正在尝试使用静态类将值传递给视图 而不是使用意图 因为我必须传递大量数据 有时我会收到此错误 但无法找出主要原因是什么 Error java lang IllegalStateException The application s Pag
  • 在 android 中建立与 MySQL 的池连接

    我需要从我的 Android 应用程序访问 MySQL 数据库 现在所有的工作都通过 DriverManager getConnection url 等等 但我必须从多个线程访问数据库 所以我必须使用连接池 问题1 是 com mysql
  • Android Eclipse 上的 Web 服务

    我是 android eclipse java 的新手 事实上这个论坛也是如此 有人遇到过这种情况吗 从用户那里获取输入并通过使用 android eclipse 中的 Web 服务来显示适当的结果 有可用的示例吗 非常感谢 我正在发布教程
  • 图像作为电子邮件附件

    我想构建一个应用程序 我可以在电子邮件中附加图像 打开图像并将其设置为我的壁纸 我想让它跨平台 所以你能告诉我是否可以使用phonegap 或者我是否必须为iphone和android构建一个本机应用程序 您好 如果您只想通过电子邮件附加图
  • Android - AudioRecord类不读取数据,audioData和fftArray返回零

    我是 Android 新手 一直在开发音调分析器应用程序 最低 SDK 8 我读了很多关于如何实现 Audiorecord 类的文章 但我想知道为什么它在我录制时不读取任何数据 我尝试显示 audioData 和 fftArray 的值 但
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • OnLongClickListener 不工作

    我有一个ImageView 我需要使用onLongClickListener对于图像视图 当我使用这段代码时 什么也没有发生 Code gallery Gallery findViewById R id gall1 gallery setA
  • 您使用什么物理 Android 设备进行测试?

    有什么好的推荐用于测试目的的物理 Android 设备吗 我正在苹果阵营寻找像 iPod touch 这样的设备 可以帮助 iOS 开发人员测试他们的东西 我知道有 Nexus One 但那东西相当昂贵 而且我并不真正关心手机的东西 而是可
  • Android Studio 缓慢的增量构建

    我已经完成了许多步骤来完善我们的构建系统 those https stackoverflow com questions 16775197 building and running app via gradle and android st
  • 通过系统应用程序以编程方式静默安装 apk(无需 root)

    我有带有 android sharedUserId android uid system UID 1000 的系统级应用程序 设备未root INSTALL PACKAGES 权限包含在清单中 我可以静默安装下载的 apk 吗 我已经发现这
  • 通过电子邮件发送文本文件附件

    我正在尝试附加一个文本文件以便通过电子邮件发送 但每当我打开电子邮件应用程序时 它都会说该文件不存在 请帮助 Intent i new Intent Intent ACTION SEND i setType text plain i put
  • 没有支持 FEATURE_CAMERA_EXTERNAL 的 Android 设备

    根据this doc https source android com devices camera external usb cameras一些 Android 设备允许使用 Camera2 API 访问外部 USB 摄像头 我检查了大约

随机推荐

  • Mongodb 服务器启动警告

    我见过其他人有启动警告 但我似乎在这个上找不到任何内容 一些注意事项我在 Ubuntu 14 04 上运行 我的 mongo 版本是 3 0 5 我也尝试过 3 0 6 但有类似问题 我尝试停止 重新启动但无济于事 它似乎正在寻找一个不存在
  • 动态语言 IDE 中的自动补全,特别是 PyDev 中的 Python

    我是 Python 新手 具有静态类型语言 包括大量 Java 背景 在检查了功能 受欢迎程度等之后 我决定在 Eclipse 中使用 PyDev 作为 IDE 我很惊讶自动完成功能似乎无法正常工作于内置程序 例如 如果我在以下之后尝试对数
  • 在 C# 中转换日期时间格式

    如何从网络服务转换此日期时间格式 日期时间值为 timestamp 2014 04 18T14 45 00 02 00 我不想将其转换为 dd mm YYYY hh mm ss 你需要使用 yyyy MM dd T HH mm ssK 格式
  • SELECT、foreach 选项中的 knockoutjs 无容器模板不适用于 Internet Explorer

    我有一个测验 调查应用程序 但在使用 knockoutjs 填充下拉列表时遇到问题 请用 Firefox 或 Chrome 检查这个小提琴 然后用 Internet Explorer 9 或 IE8 或 IE7 knockout 说与 IE
  • 在 VB.Net 中使用 Enter 键的 Tab 键功能

    I have a form with nearly 20 Textbox and 5 Combobox and one control in dependent on the other Now I want to write the co
  • 通过数据映射器处理集合模式中的项目

    我的问题与更新部分有关 特雷斯科的回答于 谁应该处理复杂查询中的条件 数据映射器还是服务层 下面是代码供参考和方便 category new Category category gt setTitle privacy list new Ar
  • Info.plist:操作无法完成。 (XCBUtil.PropertyListConversionError 错误 0。)

    我在调试构建过程中收到此错误 无法从文件读取属性列表 Users TestApp FastApp ios FastApp Info plist 操作无法完成 XCBUtil PropertyListConversionError 错误 0
  • 我可以将 Java 编译为本机代码吗?

    有没有什么方法可以在不需要 JVM 的情况下从 Java 编译为独立 或库 机器代码 曾经有一个名为 GCJ 的工具 它是 GCC 的一部分 但它现在已被删除 现在 GCC 站点中的所有链接都重新定向到其非 GCJ 等效链接 注意 所有评论
  • 从 Angular JS 中的 Web api 下载 csv 文件

    我的 API 控制器返回一个 csv 文件 如下所示 HttpPost public HttpResponseMessage GenerateCSV FieldParameters fieldParams var output new by
  • 确定程序集是否是 GUI 应用程序

    我正在尝试确定 C 程序集是 GUI 还是控制台应用程序 以便构建一个可以自动重新创建丢失的快捷方式的工具 目前 我有一个例程 它递归地步进 Program Files 中的所有目录 以及 x86 目录 对于找到的每个 EXE 该工具都会调
  • 如何从 .java 文件制作 JAR?

    我正在使用 Java 应用程序编写一个简单的程序 不是具有项目的应用程序 而是项目内的应用程序 java 具有单个框架 这两个文件都是 java所以我不能写manifestJAR 需要 The 我的应用程序 java像带有包的类一样开始 然
  • JavaScript:覆盖整个类的构造函数中定义的属性

    我试图覆盖一个类的功能 class MyClass constructor more code myFunction function console log not this can t change the code above MyC
  • 如何让身高真正达到100%

    在 CSS 中 当您将某些内容的宽度或高度设置为 100 时 它实际上只会将其设置为浏览器窗口的 100 有什么办法可以让它100 占整个页面吗 让我重新表述一下 我希望这个元素 div 占据整个页面 无论您滚动多少 让父元素具有 100
  • 如何在 iOS16 的 Swift 中用 NavigationLink(value:label:) 替换 init(destination:tag:selection:label:) ?

    我使用以下 Swift 代码在我的 iPhone 应用程序中执行两件事 调用方法somethingElse 单击按钮时 将视图更改为SecondView Code struct PrimaryView View State var butt
  • 当前帧的绘制时间(以秒为单位),点后仅 2 位数字

    我找不到用点后仅两位数来绘制当前帧的时间 以秒为单位 的方法 我尝试了 drawtext 它做得很好 但是它给出了或 int 秒 或带有许多数字的浮点数 Use the eif绘制文本中的函数 这可用于计算表达式的值并将其打印为指定位数的整
  • Swift:尝试使用 UISlider 控制 AVAudioPlayerNode 中的时间

    我正在使用一个AVAudioPlayerNode附加到一个AVAudioEngine播放声音 为了获取玩家的当前时间 我正在这样做 extension AVAudioPlayerNode var currentTime TimeInterv
  • UIImageView|无法识别的选择器发送到实例 | Xcode 6.4 | iOS 8.4

    我是 Xcode 的新手 我的任务是将代码从iOS 6 1 至 8 4 但是有很多不推荐使用的方法 我解决了它们 我希望如此 但现在我遇到了一个新问题 我正在使用的代码是这样的 self clientImageView sd setImag
  • 从日期选择器中隐藏日期

    目前我正在使用本机日期选择器 但我想以一种只需要月份和年份的方式更改它 如何修改这个我的代码如下 Override protected Dialog onCreateDialog int id switch id case DATE DIA
  • 删除记录

    我有一个表 user logs 其中包含以下字段 username datetimelog 样本数据 user1 2011 06 28 08 49 01 user2 2011 06 28 08 59 38 user3 2011 06 28
  • Android 应用程序开发和 Web 服务器交互

    我刚刚学习 Android 开发 所以如果这本质上有点不对劲 请原谅 我想制作一个与我的网站上的数据库交互的应用程序 从某种意义上说 这两件事将互为补充 就这样 我正在尝试找出与服务器交互的最佳方式 我不想要一个在类似浏览器的环境中的应用程