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

透過POST與網頁交換資料

發表人: Seachaos
積分: 2432
發表時間: 2011-08-23 07:54:18
您好:
因我不熟微軟的產品
但原理都是一樣的
ASP.NET也是有可以收POST的方法,直接用就可以了 (網頁的原理都一樣,不管是ASP,PHP,JSP)
且ASP.NET好像也有RESTful的Framewrok可以用
發表人: Ice
積分: 34
發表時間: 2011-12-11 15:09:08
您好,我想請問一下,當我執行到hr = new DefaultHttpClient().execute(hp);的時候,就會跑catch (IOException e) 這個例外,不知道原因為和...我有連過自己另外價的Server是可以成功的,但是用自己家裡的電腦作本機測試就會跑IOException這個例外錯誤...想請問問題是甚麼,解決辦法,謝謝解答。
發表人: Seachaos
積分: 2432
發表時間: 2011-12-11 21:31:09
你好,可不可以貼些你的程式碼?
因為這樣我看不出來問題點
發表人: Ice
積分: 34
發表時間: 2011-12-11 22:36:11
其實就是仿造版主的程式碼
vlog.setText("數字");
其實就是我自己在測試看他跑到哪邊的時候會發生問題
實際上會跑到vlog.setText("4");,會顯示4,再來5就沒顯示了,所以我判斷是4跟5的中間發生IOException例外。
謝謝解答~
[sea:javaCode]
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

TextView vtext = (TextView) findViewById(R.id.TV);
TextView vlog = (TextView) findViewById(R.id.log);

vtext.setText("Runing...");
/* Post Http Data */
String SyncURL="http://127.0.0.1/post.php";
String response;
HttpPost hp = new HttpPost(SyncURL);
HttpResponse hr;
vlog.setText("1");
List <NameValuePair> params = new ArrayList <NameValuePair>();
//Add Post Data
params.add(new BasicNameValuePair("data","Send...@@"));
params.add(new BasicNameValuePair("text","中文"));
vlog.setText("2");

try {
UrlEncodedFormEntity urf = new UrlEncodedFormEntity(params,HTTP.UTF_8);
vlog.setText("3");
hp.setEntity(urf);
vlog.setText("4");
hr = new DefaultHttpClient().execute(hp);
vlog.setText("5");
if(hr.getStatusLine().getStatusCode()==200){
response=EntityUtils.toString(hr.getEntity());
vtext.setText(response);
vlog.setText("6");
}else{
vtext.setTag("Error State:"+hr.getStatusLine().getStatusCode());
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
vtext.setText("1Error..."+e.toString());
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
vtext.setText("2Error..."+e.toString());
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
vtext.setText("3Error..."+e.toString());
e.printStackTrace();
}
}

[/sea]
發表人: Seachaos
積分: 2432
發表時間: 2011-12-12 00:43:59
我想你的問題可能是出在Server的位置
在Android模擬器要連到Server的話是10.0.2.2
不是127.0.0.1 (因為這是連到localhost, 但你的Android本身不是Server)
所以要用10.0.2.2來連到PC上
另外是手機的話建議用AP在區網

試看看,有問題的話歡迎討論
發表人: Ice
積分: 34
發表時間: 2011-12-12 15:59:18
可以了,謝謝Seachaso幫忙解答,感謝~
發表人: Ice
積分: 34
發表時間: 2011-12-13 00:23:12
想再請問一下
[sea:javaCode]
response=EntityUtils.toString(hr.getEntity());
[/sea]
他抓的是那個PHP全部的程式碼...
或是echo出來的值
如果我echo兩個東西
他會一次兩個都抓
我要怎麼設定,才能夠讓Android去抓PHP上我想要的值,而不是全部的程式碼
因為我主要是想要讓Android讀取資料庫的東西
所以Android→PHP→MySQL
去讀取資料...
發表人: Seachaos
積分: 2432
發表時間: 2011-12-14 15:44:54
你好:
不太清楚你的意思
你說抓到PHP的程式碼? 是說你的PHP Server沒有正確的執行嗎?

如果你是要交換資料的話可以用JSON的方式

可以看一下這兩篇
http://www.myandroid.tw/bbs-topic-1193.sea
http://www.myandroid.tw/bbs-topic-996.sea
發表人: Ice
積分: 34
發表時間: 2011-12-22 10:30:47
這幾天比較忙,沒時間回版大,版大給的教學資訊很有用,受用無窮,
感謝感謝~
發表人: 好小子
積分: 4
發表時間: 2012-08-24 04:03:16
請問一下,用模擬器執行時php要放在哪裡呢?
發表人: 訪客
發表時間: 2012-08-27 11:18:44
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();
}

我按照這方式打完之後,在我的手機端裡顯示的內容,為什麼中文字的部份會是亂碼 ?! 而數字部份卻是正常呢?
發表人: 小屁孩
積分: 16
發表時間: 2012-11-02 10:18:57
PHP 要怎麼寫?

要怎麼樣才可以傳遞用戶端的資料到網頁裡??
我爬了很多的文都是失敗的><
可以麻煩版大告述我該怎麼辦嗎??
發表人: 訪客
發表時間: 2013-06-05 11:01:18
您好!! 您的教學我都有成功了 但是那是在HTML+PHP+MYSQL上 可是我試用在 MSSQL+ASP.NET 上無法使用ㄝ 雖然他有回傳 但是我要寫的是帳號密碼驗證 他完全沒有登入情形!! 那我使用的asp.net的code 如下

//-------------這裡是JAVASCRIPT的方法-------------------------------
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//----------------------這裡是我使用的按鈕--------------------------------------------
<a id="ctl00_LinkButton1" class="masterpage1" href="javascript:__doPostBack('ctl00$LinkButton1','')" style="text-decoration:none;">登入</a></td>
請大大幫忙 盡快回復我感謝!! ^^