2010-05-01 7 views
1

J'essaie de porter mon compteur d'utilisation d'un gadget JavaScript (win)/Widget (OSX) à Android. Débutant total quand vient à JAVA + Eclipse + Android 2.1 SDK. Essentiellement, ce que je veux faire est de charger une page, de passer un nom d'utilisateur et un mot de passe et de charger la page résultante dans un tableau que je peux ensuite utiliser avec des expressions régulières.Comment charger une URL nécessitant une connexion dans une variable?

Mon code de JavaScript (je l'ai remplacer l'URL avec un mannequin) est:

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); 

Je dois savoir l'équivalent Android à ce qui précède s'il vous plaît. J'ai joué avec WebView mais cela charge la page dans un navigateur web qui n'est pas ce que je veux.

Répondre

0

Si vous ne souhaitez pas inclure une bibliothèque tierce partie, vous pouvez Somthing le long des lignes ci-dessous:

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(); 

Cependant, je vous encourage à utiliser une bibliothèque tierce partie pour rien de moins trivial que cela. J'utilise Apache HttpClient dans mon widget Android :)

+0

Merci beaucoup, je vais essayer. La syntaxe serait-elle plus simple si j'utilise Apache HttpClient? – bebeTech

+0

Bien sûr. Jetez un coup d'œil aux [exemples] (http://hc.apache.org/httpcomponents-client/examples.html). Le principal avantage que je vois cependant, c'est la maturité du code. Je vous garantis que vous aurez moins de bugs à corriger si vous utilisez une bibliothèque bien testée pour faire la tâche. – aioobe

+0

Super. Cet exemple semble être exactement ce que je suis après: http://svn.apache.org/repos/asf/httpcomponents/httpclient/branches/4.0.x/httpclient/src/examples/org/apache/http/examples/client /ClientFormLogin.java. Juste une question cependant, sur Android, où est-ce que System.out.println envoie la sortie? Je l'ai essayé dans le passé mais rien n'apparaît sur l'appareil? – bebeTech

Questions connexes