port bash脚本到java

时间:2011-03-10 16:50:36

标签: android bash https

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

e.g。登录功能如下:

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

1 个答案:

答案 0 :(得分:1)

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

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

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

  • - 位置:如果网页已移至其他网址,则会尝试使用新网址再次运行curl命令。
  • - Cookie :Cookie用于跟踪用户请求。它允许服务器知道同一个人再次访问。每个URL请求通常是独立且独立的,因此http使用所谓的会话cookie 来跟踪用户访问网站时的情况。通常,参数为key=value,这是要使用的cookie。
  • - cookie-jar :这是服务器可以在本地系统上存储会话cookie的文件。这允许服务器获取和检索会话信息。
  • - 输出:这是输出从服务器检索的网页的位置。 /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参数中。