android - 将 bash 脚本移植到 java

标签 android bash https

我找到了以下我想在 Android 应用程序中使用的 bash 脚本。尽管花了一段时间开发应用程序,但我几乎没有 bash/http 经验,也不知道从哪里开始。

例如登录函数如下所示:

curl \
    --location \
    --cookie "$COOKIES" \
    --cookie-jar "$COOKIES" \
    --output /dev/null \
    "http://connect.garmin.com/signin" && \
  curl \
    --location \
    --cookie "$COOKIES" \
    --cookie-jar "$COOKIES" \
    --data "login=login&login%3AloginUsernameField=$USER&login%3Apassword=$PASSWORD&login%3AsignInButton=Sign+In&javax.faces.ViewState=j_id1" \
    --output - \
    "https://connect.garmin.com/signin" |\

curl如何对应Android的HttpClient命令等?

代码来自这里:http://braiden.org/?p=62#more-62

最佳答案

Curl是一个允许您(通过命令行)下载 http 和 https 请求而无需通过浏览器的程序。它类似于 wget命令。

同时,Android 的 HttpClient 不是命令,甚至不是函数。它是一个基于类的 API,允许您执行 http 请求。

我建议您浏览 Curl手册页(我链接到的),看看你是否能看到传递给 Curl 的各种参数的作用。此命令两次访问相同的 URL "http://connect.garmin.com/signin"。第一次它只是检查它是否可访问。如果是,它将运行第二个 curl 命令。以下是各种参数的含义:

  • --location:如果网页已移动到不同的 URL,这将尝试使用新 URL 再次运行 curl 命令。
  • --cookie:cookie 用于跟踪用户请求。它允许服务器知道同一个人再次访问。每个 URL 请求通常都是单独且独立的,因此 http 使用所谓的 session cookie 来跟踪用户访问该网站。通常,参数以 key=value 的形式给出,这就是要使用的 cookie。
  • --cookie-jar:这是服务器可以在您的本地系统上存储 session cookie 的文件。这允许服务器获取和检索 session 信息。
  • --输出:这是输出从服务器检索到的网页的地方。 /dev/null 是一个你可以把你不想要的东西扔出去的地方。 -表示将网页打印到屏幕上。

基本上,第一个 curl 命令会访问 Garmin 登录页面 (http://connect.garmin.com/signin)。它正在丢弃数据。这样做只是为了查看网页是否真正启动。

第二个curl 命令是登录。--data 行是发送到网页的数据。它假装您已经在登录页面上填写了登录表单,并将您的用户名和密码发送给 Garmin。该页面的输出作为 http 网页输出进入终端(我敢打赌,它正在被解析以获取您想要的信息)。

您说您已经成为 Android 开发人员一段时间了,所以我假设您了解 Android 编程并了解 Android API 的工作原理。我不是 Android 开发人员,但我看过 AndroidHttpClient API documentation它看起来并不那么复杂。基本上,您需要创建一个对象,该对象可以向 http://connect.garmin.com/signin 发送请求以验证它是否已启动并正在运行,如果是,您将另一个请求发送到https://connect.garmin.com/signin 登录。您发送的数据在 --data 参数中。

关于android - 将 bash 脚本移植到 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5262985/

相关文章:

android - 通过 Android NSD 在我的本地网络上发现智能电视

安卓 : Capturing HTTP Requests with non-rooted android device

bash - 在 Linux 上使用 postgres bash 运行选择查询时打印的行数有限

SVN:从文件夹中移动文件

python - 调用了意外版本的 python3

ssl - HTTPS (ssl) 究竟是如何工作的

Android View 动画和硬件层

安卓布局: scrolling list with header

java - 在 IBM Notes 中发送 HTTPS 帖子时出现 SSLHandshakeException

安卓 posturl https