2010-05-01 6 views
1

자바 스크립트 가젯 (위젯)/위젯 (OSX)에서 Android로 내 사용량 측정기를 이식하려고합니다. JAVA + Eclipse + Android 2.1 SDK의 경우 신참자 본질적으로 내가하고 싶은 것은 페이지를로드하고, 사용자 이름과 패스워드를 전달하고 결과 페이지를 배열로로드 한 다음 정규 표현식을 실행할 수있게하는 것입니다.변수에 로그인해야하는 URL을 어떻게로드합니까?

자바 스크립트에서 내 코드 (나는 더미 하나 실제 URL을 대체했습니다)이다 : 나는 위의 안드로이드 동등한하시기 바랍니다 알 필요가

xmlhttp.open("post","https://acme.com.au/your_account/index.php?function=login",false); 
xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); 
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
xmlhttp.send("check_username=" + username + "&password=" + password); 

. 나는 WebView를 가지고 놀았지만 웹 브라우저에서 원하는 페이지가로드되지 않습니다. 당신은 타사 라이브러리를 포함하지 않는 경우

답변

0

, 아래의 라인을 따라 뭔가를해야만 할 수 :

URL url = new URL("https://acme.com.au/your_account/index.php?function=login"); 

HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

// If you need a cookie from previous requests 
//conn.setRequestProperty("Cookie", "JSESSIONID=" + encode(jSessionId, "UTF-8")); 
conn.setRequestProperty("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); 
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 

conn.setRequestMethod("POST"); 
conn.setDoOutput(true); 
conn.setDoInput(true); 

DataOutputStream out = new DataOutputStream(conn.getOutputStream()); 
out.writeBytes(String.format("check_username=%s&password=%s", 
     URLEncoder.encode(PERSNR, "UTF-8"), 
     URLEncoder.encode(PASSWD, "UTF-8"))); 

out.close(); 

// I have absolutely no idea why this is needed. 
InputStream is = conn.getInputStream(); 
// ... read the response from is. 
is.close(); 

나는이보다 사소한 아무것도 일부 타사 라이브러리를 사용하는 것이 좋습니다 그러나. 내 안드로이드 위젯에서 Apache HttpClient를 사용합니다 :)

+0

큰 감사, 나는 그것을 시도 할 것입니다. Apache HttpClient를 사용하면 구문이 더 단순합니까? – bebeTech

+0

물론입니다. [예제] (http://hc.apache.org/httpcomponents-client/examples.html)를보십시오. 그러나 내가 본대로 주요 이점은 코드의 성숙이다. 잘 수행 된 라이브러리를 활용하여 작업을 수행하면 수정해야 할 버그가 줄어들 것입니다. – aioobe

+0

좋아요. 이 예제는 정확하게 내가 한 것 같습니다 : http://svn.apache.org/repos/asf/httpcomponents/httpclient/branches/4.0.x/httpclient/src/examples/org/apache/http/examples/client /ClientFormLogin.java. 안드로이드에서 System.out.println은 어디에서 출력을 보내나요? 나는 과거에 그것을 시도했지만 아무것도 장치에 나타나지 않습니까? – bebeTech

관련 문제