2010-08-23 5 views
0

J'essaye de transformer une interface web en une interface Android en analysant la page Web pour y trouver des données pertinentes, puis en permettant à l'utilisateur de renvoyer des données au serveur. En utilisant le code HttpClient simple, j'ai réussi à obtenir la page Web, puis analyser les informations nécessaires. Je ne suis pas familier avec l'envoi de données, donc, j'espère que quelqu'un peut faire la lumière. Voici le code HTML pertinent de la page de connexion.Envoyer des commandes html sur httpclient android

<table cellspacing=0 cellpadding=0><tr><td valign=top align=center> 


<table cellspacing=0 cellpadding=0 border=0 width=220 align=center class=table_back><tr><td> 
<table cellspacing=1 cellpadding=1 border=0 width=100%> 
<tr class=table_row1><form action="i.cfm?&1028&p=login&se=4" method=post name=stepform><Td align=right nowrap>&nbsp;Empire Name&nbsp;</td><td>&nbsp;<input type=text name=nic size=16 ></td></tr> 
<tr class=table_row2><Td align=right>Password&nbsp;</td><td>&nbsp;<input type=password name=password size=16 ></td></tr> 

<tr class=table_row1><Td align=right valign=top>Server</td><td>&nbsp;<select name=server> 


<option value="0" >Normal</option> 

<option value="1" >Fast</option> 

<option value="2" >Slow</option> 

<option value="3" >Ultra</option> 

<option value="4" selected>RT</option> 


</select><font class=smallfont> <a href=javascript:ch('i.cfm?popup=help&type=server');>What is this <img src=i/help.gif></a> 
</td></tr> 
<tr class=table_row2><Td align=right>&nbsp;IP&nbsp;</td><td>&nbsp;69.47.105.149 <font class=smallfont>(United States of America)</font></td></tr> 
<tr class=table_row1><td>&nbsp;</td><td>&nbsp;<input type=submit value=" Login " ></td></tr> 

</td></tr></table></table> 

Comme vous pouvez le voir, il y a 3 entrées nécessaires, le « Nom Empire », « Mot de passe » et le « serveur » qui se composent de 5 options. Comment procéder pour renvoyer ces données au serveur via httpClient, en supposant que j'ai rassemblé les informations pertinentes de mon interface graphique Android? Toute aide est grandement appréciée.

+0

Vous analysez HTML pour générer l'interface utilisateur de votre application? Cela semble être une idée terrible. Qu'est-ce que vous essayez réellement d'accomplir? – noah

+0

Semble racler la page Web pour les entrées de formulaire et les présenter en tant que contrôles d'interface graphique Android à l'utilisateur. Intéressant en fait ... – Mchl

+0

Exactement ce que Mchl a dit, je gratte la page Web pour des informations pertinentes. Sur cette page particulière pour que j'érafle l'adresse IP que le site présente dans,   IP     69.47.105.149 (Etats-Unis d'Amérique Je le présente ensuite dans un format plus convivial dans l'interface graphique. Mais le seul problème est de renvoyer les informations que je rassemble de l'utilisateur dans mon interface graphique au serveur d'une manière que le site Web d'origine le ferait. –

Répondre

0

Le code peut ressembler à ce qui suit:

private void postDataToServer() throws UnsupportedEncodingException, IOException { 

    /* 
    * Taken from "action" field in the form. This can be absolute address 
    * so take this into account. 
    */ 
    String action = "i.cfm?&1028&p=login&se=4"; 
    /* This the server you want to send info. */ 
    String yourServer = "http://your.server.com/"; 

    /* This form uses "post" method. */ 
    HttpPost post = new HttpPost(yourServer + action); 
    /* Form parameters. */ 
    List<NameValuePair> params = new ArrayList<NameValuePair>(); 

    /* This is what the user has entered in the corresponding fields. */ 
    String nic = getNic(); 
    String password = getPassword(); 
    String server = getServer(); 

    params.add(new BasicNameValuePair("nic", nic)); 
    params.add(new BasicNameValuePair("password", password)); 
    params.add(new BasicNameValuePair("server", server)); 

    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "UTF-8"); 

    HttpClient client = new DefaultHttpClient(); 

    post.setEntity(entity); 
    client.execute(post); 
} 

Peut-être que ce page peut aussi aider.

+0

Cela ressemble à ce que je cherche. Je vais regarder plus en détail, merci. –

0

Je connais une application qui ne contient qu'une vue web pour afficher le site Web mobile. On dirait que c'est ce que vous devriez faire, si vous voulez minimiser la programmation Android native.

+0

Pas vraiment ce que je cherche, si vous lisez mon commentaire dans la question d'origine, je veux me débarrasser de la mise en page et le design d'origine des sites Web et de refonte dans mon Application Android pour que je puisse le présenter d'une manière plus conviviale. –

1

Si vous voulez faire plus que gratter une page et/ou si vous voulez un outil de développement pour vous aider, jetez un oeil à Web Harvest. Il peut avoir des dépendances en dehors de ce qu'offre Android, mais il est sous licence BSD si vous devez l'adapter à la plate-forme cible. La source est here.

Questions connexes