2011-03-10 138 views
1

我找到了我想在Android應用程序中使用的以下bash腳本。儘管花了一段時間開發應用程序,但我沒有bash/http體驗,也不知道從哪裏開始。端口bash腳本到java

例如登錄功能如下所示:

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

Curl是一個程序,允許你(通過命令行)來下載HTTP和HTTPS請求,而無需通過瀏覽器去。它類似於wget命令。

同時,Android的HttpClient不是命令或甚至函數。它是一個基於類的API,允許您執行http請求。

我會建議你通過Curl手冊頁(我鏈接到),看看你是否能看到傳遞給Curl的各種參數。該命令兩次輸入相同的URL "http://connect.garmin.com/signin"。第一次只是檢查是否可以訪問。如果是,它將運行第二個curl命令。下面列舉一下各種參數的含義:

  • - 位置:如果網頁已經轉移到一個不同的URL,這將嘗試使用新的URL再次運行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參數中。