簡體   English   中英

將curl命令轉換為Java / Android

[英]Translating curl commands into Java/Android

有人可以幫我弄清楚如何將以下curl命令轉換為Java語法以用於Android應用程序嗎?

curl命令為:

curl -L -c cookie1 URL

curl -L -c cookie2 -b cookie1 -d "loginId=NAME&password=PASSWORD&_eventId_submit=Submit" URL2

curl -L -c cookie3 -b cookie2 -d "_eventId_submit=Submit" URL3

特別是cookie的存儲和發送。 其余的我可以管理,但是我不確定如何存儲初始GET響應的cookie,然后在后續的POST中發送它,然后在最終的POST中發送該響應的cookie。

謝謝

這幾乎可以正常工作...當我通過新的意圖開始活動時,cookie會立即被擦除。 找到更完整的解決方案后,我將編輯此答案,但是以下內容會生成所需的身份驗證cookie。

try {

  HttpGet httpget = new HttpGet("url1"); client.getCookieStore().getCookies(); HttpResponse response1 = client.execute(httpget); HttpEntity entity1 = response1.getEntity(); if (entity1 != null){ entity1.consumeContent(); } if (cookies.isEmpty()) { System.out.println("None"); } else { for (int i = 0; i < cookies.size(); i++) { System.out.println("- " + cookies.get(i).toString()); cookie = cookies.get(i); } } } catch (ClientProtocolException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair("loginId", username.toString())); nvps.add(new BasicNameValuePair("password", password.toString())); nvps.add(new BasicNameValuePair("_eventId_submit", "Submit")); HttpPost httppost = new HttpPost("url2"); httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); HttpParams params = httppost.getParams(); HttpConnectionParams.setConnectionTimeout(params, 45000); HttpConnectionParams.setSoTimeout(params, 45000); // Perform the HTTP POST request HttpResponse response = client.execute(httppost); status = response.getStatusLine().toString(); if (!status.contains("OK")) { throw new HttpException(status); } if (cookies.isEmpty()) { System.out.println("None"); } else { for (int i = 0; i < cookies.size(); i++) { System.out.println("- " + cookies.get(i).toString()); cookie = cookies.get(i); } } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (HttpException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { List<NameValuePair> nvps2 = new ArrayList<NameValuePair>(); nvps2.add(new BasicNameValuePair("_eventId_submit", "Submit")); HttpPost httppost2 = new HttpPost("url3"); httppost2.setEntity(new UrlEncodedFormEntity(nvps2, HTTP.UTF_8)); HttpParams params2 = httppost2.getParams(); HttpConnectionParams.setConnectionTimeout(params2, 45000); HttpConnectionParams.setSoTimeout(params2, 45000); // Perform the HTTP POST request HttpResponse response2 = client.execute(httppost2); if (cookies.isEmpty()) { System.out.println("None"); } else { for (int i = 0; i < cookies.size(); i++) { System.out.println("- " + cookies.get(i).toString()); cookie = cookies.get(i); settings.setASCookie(cookie); } } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

編輯:

我創建了一個擴展應用程序的應用程序類,並在其中定義了我的DefaultHttpClient,然后在所有其他活動中,我都使用該客戶端進行請求。 這允許cookie在我的應用程序中的所有活動之間共享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM