» 首頁 » 討論區 » Android程式設計 »透過POST與網頁交換資料

透過POST與網頁交換資料

發表人: Seachaos
積分: 2432
發表時間: 2009-11-12 22:44:29
Android是可以透過Http交換資料的,不過必須先引入apache相關類別
[sea:javaCode]
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
[/sea]

以下是Android透過POST方法與網頁溝通的程式碼

[sea:javaCode]
vtext.setText("Runing...");
            /* Post Http Data */
            String SyncURL="http://localhost";
            String response;
            HttpPost hp = new HttpPost(SyncURL);
            HttpResponse hr;
            
            List <NameValuePair> params = new ArrayList <NameValuePair>();
            //Add Post Data
            params.add(new BasicNameValuePair("data","Send...@@"));
            params.add(new BasicNameValuePair("text","中文"));
            try {
                UrlEncodedFormEntity urf = new UrlEncodedFormEntity(params,HTTP.UTF_8);
                hp.setEntity(urf);
                hr = new DefaultHttpClient().execute(hp);
                if(hr.getStatusLine().getStatusCode()==200){
                    response=EntityUtils.toString(hr.getEntity());
                    vtext.setText(response);
                }else{
                    vtext.setTag("Error State:"+hr.getStatusLine().toString());
                }
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                vtext.setText("Error..."+e.toString());
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                vtext.setText("Error..."+e.toString());
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                vtext.setText("Error..."+e.toString());
                e.printStackTrace();
            }

[/sea]
發表人: Seachaos
積分: 2432
發表時間: 2009-11-12 23:11:15
另外需要在AndroidManifest.xml申請權限
android.permission.INTERNET
發表人: 訪客
發表時間: 2011-01-26 14:13:53
謝謝分享,但是我可以請問一個問題嗎? 其實我爬文爬了兩天了,但是還是沒有找到可以將android連線到mysql的明確方法。我是使用xampp去架,可以用android的wifi,並用瀏覽器連線到我架的phpadmin網頁,但是我想要用的是程式直接讀取mysql裡面的資料庫,不知道該怎麼用? 或者是我的想法是把mysql轉出來的sql檔讓android可以讀取,但是我不知道該怎麼轉? 是要轉成db檔嗎?還是android也可以讀sql檔或csv檔?
發表人: elephant
積分: 12
發表時間: 2011-01-26 14:16:04
或者可以透過apache去溝通?還是要灌些connector driver 之類的?
發表人: 訪客
發表時間: 2011-03-27 20:37:37
你好~我想請問一下~
android手機要怎麼從asp.net的網頁收到封包
(類似php的echo)
發表人: Seachaos
積分: 2432
發表時間: 2011-04-03 02:55:00
您好asp.net只要print出資料就ok
Android 收資料和ASP或PHP沒有關係,因為都是HTML
發表人: 訪客
發表時間: 2011-04-29 01:48:15
請問一下
php的部分怎麼寫
我寫了一個範例它一直拒絕我連線
不然就是資料在手機端就丟不出去了
發表人: Seachaos
積分: 2432
發表時間: 2011-04-30 04:46:49
您好:
你可以先透過php echo的方式來看手機與PHP Server是否有連接
如果沒有的話可能要檢查一下是否有防火牆擋住

或是如果方便的話可以貼上一些程式碼讓我看看
發表人: 訪客
發表時間: 2011-05-03 15:36:02
請問一下..vb架的主機端要如何和android接收和傳送字串
發表人: 訪客
發表時間: 2011-05-07 04:18:24
你說VB端是說Socket?
還是ASP.NET?
發表人: 訪客
發表時間: 2011-05-09 03:41:03
asp.net :)))
發表人: Seachaos
積分: 2432
發表時間: 2011-05-09 14:03:46
ASP.NET做法也是一樣的
就是利用ASP.NET去做運算
然後show出html或xml格式給Android
他再去抓資料下來
發表人: 訪客
發表時間: 2011-05-09 20:14:08
請問一下...有沒有範例檔^^"(asp..net的vb)
發表人: 訪客
發表時間: 2011-05-11 10:45:41
受益良多 謝謝學弟分享 XD
發表人: Seachaos
積分: 2432
發表時間: 2011-05-12 01:50:40
[quote]訪客 提到:
請問一下...有沒有範例檔^^"(asp..net的vb)[/quote]

基本上來講,你把ASP.NET當作HTML來跑就對了
先讓Android可以Catch到資料為主
發表人: 訪客
發表時間: 2011-05-31 08:45:10
不好意思 我想知道如何抓取台北公車方面資料,我現在想先試看看讀取台北公車方面的系統資料而我也利用wireshark去抓看看5284文字版路線查詢的資料
我本是想試看看能不能找到台北公車的資料庫位置,這樣就能連到資料庫抓到公車資料。
但我似乎只能找到單筆公車的位置,無法直接連上他們的資料庫,這樣要收集全部資料庫似乎會有難度。
想請問你如何抓到台北方面的公車資料?
你又要如何從5284網站查詢得到資料傳到手機上的?
發表人: Seachaos
積分: 2432
發表時間: 2011-06-01 02:08:13
[quote]訪客 提到:
不好意思 我想知道如何抓取台北公車方面資料,我現在想先試看看讀取台北公車方面的系統資料而我也利用wireshark去...[/quote]
不用到wireshark這麼底層
5284只是單純的網頁

可以從這邊著手
http://e-bus.taipei.gov.tw/pda/route.aspx

行動版的網頁比較簡單
(我記得映象中有看過JSON版的,那會更好)
可以進行文字的截取
然後就可以取出各站的時間

如果要收集所有資料就要慢慢建表或利用官方的查詢係統來達成

參考看看
發表人: 訪客
發表時間: 2011-08-20 20:46:11
請問若是使用IIS的話
前面APACHE引入的部分要如何更改??
發表人: Seachaos
積分: 2432
發表時間: 2011-08-22 00:10:32
你好:
不太清楚你的意思
你是說IIS上的PHP?
還是Apache有問題??
發表人: 訪客
發表時間: 2011-08-22 19:17:38
[quote]Seachaos 提到:
你好:
不太清楚你的意思
你是說IIS上的PHP?
還是Apache有問題??[/quote]
[quote]Seachaos 提到:
你好:
不太清楚你的意思
你是說IIS上的PHP?
還是Apache有問題??[/quote]

噢 不好意思沒說清楚
我們專案電腦是使用IIS+ASP.NET
不過目前手上的書跟網路上所找到的幾乎都是Apache+Php
所以想請教一下語法該怎跟改 謝謝~