2010-08-23 175 views
0

我試圖通過解析相關數據的網頁,然後允許用戶發送回數據到服務器,從而將Web界面轉變爲一個Android界面。使用簡單的HttpClient代碼,我設法獲取網頁,然後解析必要的信息。我不熟悉發回數據,所以,我希望有人能夠闡明一些看法。以下是來自登錄頁面的相關HTML代碼。通過httpclient發送html命令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> 

正如你可以看到有需要的3個輸入,在「帝國名」,「密碼」,「服務器」,它包括5個選項。假如我從Android GUI收集了相關信息,我將如何通過httpClient將這些數據發送回服務器。任何幫助是極大的讚賞。

+0

您解析HTML以爲您的應用程序生成UI?這似乎是一個可怕的想法。你究竟在努力完成什麼? – noah 2010-08-23 18:48:36

+0

看起來像刮取表單輸入的網頁並將它們作爲Android GUI控件呈現給用戶。實際上有趣... – Mchl 2010-08-23 18:56:39

+0

Mchl說什麼,我正在刮網頁的相關信息。在這個特殊的頁面我颳了,該網站顯示的IP地址,   IP  ​​  69.47.105.149 (美利堅合衆國) 然後我在GUI中以更友好的UI格式呈現它。但唯一的問題是將我在GUI中從用戶收集的信息以原始網站的方式發送回服務器。 – 2010-08-23 19:28:00

回答

0

代碼可能如下所示:

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

也許這page也可能有幫助。

+0

這看起來像我在找什麼。我會更多地考慮一下,謝謝。 – 2010-08-24 03:09:36

0

我知道一個應用程序,其中只包含一個webview來顯示移動網站。聽起來就像是你應該做的,如果你想盡量減少原生的android編程。

+0

不是我要找的東西,如果您在原始問題中閱讀我的評論,我想擺脫網站的原始佈局和設計,並在我的內部重新設計Android應用程序,以便我可以以更友好的方式呈現它。 – 2010-08-23 19:29:46

1

如果您要做的不只是刮一個頁面和/或想要開發工具來幫助您,請參閱Web Harvest。它可能具有Android以外的依賴關係,但是如果您需要將其適配到目標平臺,則它會受到BSD許可。來源是here