**************************
2012.08.13版主回覆:
底下好多留言都詢問,奇怪?怎麼模擬器上都出現文字
然後網頁上沒出現?
不要再相信沒有事實根據的說法了 (大誤
不要再說沒有小弟不才,沒有爬文
請移步至新版:
http://j796160836.pixnet.net/blog/post/30577968
個人還是建議從本篇看起,概念比較清楚
**************************
最近常常被問到這些問題
Android要怎麼接MySQL資料庫呀? MySQL在網路上
Android怎麼接上雲端的資料庫?
Android怎麼傳送表單內容?
這些答案都在這裡
網路上的資料庫,不太容易,也不建議直接與資料庫做溝通
因為涉及到資訊安全的東西
可以用網頁來做中間的介面,讓二者產生關聯
做類似WebServices的東西
(雖然不是真正的WebServices,但其角色是類似的)
--------------------------------------------------------------------
伺服器端
你可以簡單寫個印字串的程式,如果收到POST的封包
就印出其內容
如果是PHP可能這樣寫
<?php
//宣告utf-8的編碼
header("Content-Type:text/html; charset=utf-8");
$data=$_POST['data'];
echo "data=".$data;
?>
把寫好程式,取名httpPostTest.php
把他擺到htdoc底下 (windows)
或是/var/www/ (ubuntu)
或是/var/www/html (Fedora, Cent OS)
用ASP可能這樣寫
<%@ LANGUAGE=VBScript CodePage=950%>
<%
data=request("data")
response.write "data="&data
%>
不管如何,請照你的伺服器語言撰寫
--------------------------------------------------------------------
Android手機端
可以用範例程式碼來解決問題
這些範例仿間找的到
因為過於複雜,所以我又重新整理了其範例給大家看
關鍵程式碼不到5行,但重點是在於你對Android的UI介面認識與否
和動態網頁的語言的熟練度
--------------------------------------------------------------------
照慣例,文字要放在string.xml裡
/res/values/string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">httpPostTest</string>
<string name="help_txt">請輸入文字以便使用POST傳送:</string>
<string name="txt_message_hint">請輸入文字</string>
<string name="send">送出</string>
</resources>
--------------------------------------------------------------------
看一下Layout檔
/res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/help_txt"
/>
<EditText
android:id="@+id/txt_message"
android:hint="@string/txt_message_hint"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/send_btn"
android:text="@string/send"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
這裡沒甚麼特別,就是一個EditText來讓使用者能打入資料
然候一個按鈕讓系統傳送封包到寫死的網址路徑
--------------------------------------------------------------------
程式碼要上了
main.java
package com.J_Test.httpPostTest;
/*
* ====httpPostTest範例====
* 1. 請先確認Apache有沒有正確執行
* 2. 放入以下PHP代碼到htdoc資料夾中(或是/var/www/)等路徑
*
<?php
//宣告utf-8的編碼
header("Content-Type:text/html; charset=utf-8");
$data=$_POST['data'];
echo "data=".$data;
?>
*
* 3. 修改uriAPI的IP和檔案名稱為正確 (請用電腦對外之IP)
* (不可用127.0.0.1因為Android手機上也有本機位址)
*
*/
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
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 android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
publicclass main extends Activity implements OnClickListener
{
private EditText txtMessage;
private Button sendBtn;
private String uriAPI = "http://192.168.1.3/httpPostTest.php";
@Override
publicvoid onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtMessage = (EditText) findViewById(R.id.txt_message);
sendBtn = (Button) findViewById(R.id.send_btn);
if (sendBtn != null)
{
sendBtn.setOnClickListener(this);
}
}
@Override
publicvoid onClick(View v)
{
if (v == sendBtn)
{
String msg = null;
if (txtMessage != null)
{
msg = txtMessage.getEditableText().toString();
String result = sendPostDataToInternet(msg);
// 印出網路回傳的文字
if (result != null)
Toast.makeText(this, result, Toast.LENGTH_LONG).show();
}
}
}
private String sendPostDataToInternet(String strTxt)
{
/* 建立HTTP Post連線 */
HttpPost httpRequest = new HttpPost(uriAPI);
/*
* Post運作傳送變數必須用NameValuePair[]陣列儲存
*/
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("data", strTxt));
try
{
/* 發出HTTP request */
httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
/* 取得HTTP response */
HttpResponse httpResponse = new DefaultHttpClient()
.execute(httpRequest);
/* 若狀態碼為200 ok */
if (httpResponse.getStatusLine().getStatusCode() == 200)
{
/* 取出回應字串 */
String strResult = EntityUtils.toString(httpResponse
.getEntity());
// 回傳回應字串
return strResult;
}
} catch (ClientProtocolException e)
{
Toast.makeText(this, e.getMessage().toString(), Toast.LENGTH_SHORT)
.show();
e.printStackTrace();
} catch (IOException e)
{
Toast.makeText(this, e.getMessage().toString(), Toast.LENGTH_SHORT)
.show();
e.printStackTrace();
} catch (Exception e)
{
Toast.makeText(this, e.getMessage().toString(), Toast.LENGTH_SHORT)
.show();
e.printStackTrace();
}
returnnull;
}
}
--------------------------------------------------------------------
最後是AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.J_Test.httpPostTest"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".main"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<!-- 這裡加入可以存取網路的權限 -->
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
這裡很重要也很容易疏忽
除了Activity要在這裡註冊外
能對外上網的權限也在這裡註冊
如果遇到
WARN/System.err(503): java.net.SocketException: Permission denied
就該發現權限少了這一項
<uses-permission android:name="android.permission.INTERNET" />
另一個權限也常用,但仿間書常常會遺漏
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
就是能夠存取手機記憶卡的權限
--------------------------------------------------------------------
這樣有看懂嗎?
主要重點在這裡
/* 建立HTTP Post連線 */
HttpPost httpRequest = new HttpPost(uriAPI);
這個HttpPost是主要的Class名,這裡要填入存取的網址
然後
在
/*
* Post運作傳送變數必須用NameValuePair[]陣列儲存
*/
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("data", strTxt));
使用系統指定的資料格式BasicNameValuePair
BasicNameValuePair在new的時候裡面為二個字串,一個是名稱,一個是值
這裡用"data"當名字,值就是剛剛讓使用者打的資料
在
/* 發出HTTP request */
httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
的 HTTP.UTF_8 可以指定編碼格式,不過要跟伺服器端相同(照我範例走的話是不用動)
--------------------------------------------------------------------
其實這個Android其實是跟以下網頁的功能是相同的
有些值你可以對照看看,相關對照的字詞都用顏色標明了
可以將它另存到httpPostTest.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Language" content="zh-tw" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF_8" />
<title>httpPostTest</title>
<head></head>
<body>
請輸入文字以便使用POST傳送:<br />
<form method="POST" action="http://192.168.1.3/httpPostTest.php">
<input type="text" name="data" size="20" value="請輸入文字" /><br />
<input name="Submit1" type="submit" value="送出" /><br />
</form>
</body>
</html>
--------------------------------------------------------------------
延伸
其實網頁大多喜歡把很多功能做在一個檔裡,就是用一個隱藏值來判斷現在進行到那個階段
本例用op當階段的旗標
PHP版:
請輸入文字以便使用POST傳送:<br />
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="data" size="20" value="請輸入文字" /><br />
<input type="hidden" name="op" value="showValue" />
<input name="Submit1" type="submit" value="送出" /><br />
</form>
ASP版:
請輸入文字以便使用POST傳送:<br />
<form method="POST" action="<%=Request.ServerVariables("PATH_INFO")%>">
<input type="text" name="data" size="20" value="請輸入文字" /><br />
<input type="hidden" name="op" value="showValue" />
<input name="Submit1" type="submit" value="送出" /><br />
</form>
--------------------------------------------------------------------
不過還是再三的提醒
範例程式碼很簡陋,指是要讓大家看懂其中的語法
真正寫程式使用的時候
要記得在伺服器判斷輸入的型別
更不要直接讓表單直接下SQL指令
怕被資料隱碼攻擊(SQL Injection)
這是很危險低~~~~
參考資料
Google Android SDK開發範例大全 佘志龍等人著
悅知文化

請問一下~ 我的apk有跑出那個toast 這樣是不是代表我有把東西傳到目標的網頁 如果是的話~ 網頁那邊要怎麼顯示出來 我按重新整理也沒有東西出現= = ps:PHP初初初學者= =
data= 它的後面有沒有接東西? 網頁有送資料過去才會出現data=後面才會出現東西 當然要配合網頁伺服器摟
沒有耶= = 網頁那端只有 data= 後面沒了= = 但apk有跑出toast data=yyy (我傳yyy) 這不是代表有傳過去嗎?
有傳過去 你可以用"延伸"的標題上面的html原始碼測試 你直接看的話,是沒有傳資料過去的 那就是只會有data=
呃~我現在是在學校實驗室測試的 實驗室有防火牆~ 跟這不知道有沒有關係 不過如果toast是代表有傳過去的話 就應該跟防火牆無關= =
1. 要測試防火牆的話,要從防火牆外面做瀏覽測試 當然要有一個對外IP,且有設定例外 2. 如果有收到資料的話,加上資料庫的處理程式碼 (sql下Insert ...) 就可以處理資料庫了 Android這邊就像是一個 只會傳特定資料 和 "看得懂" 特定資料的瀏覽器 網址的部分你也可以直接改成別的 假設是google.com toast就會跳出網頁的原始碼
我剛才拿您說的html測測看了 有顯示data=yyy 您真內行!!! 那如果我想要用apk丟值出來 然後網頁重新整理就可以看到我丟的值 這樣是不是一定要有資料庫才可以?
不一定,但也大多會用資料庫 其它方式的話,如果只是大家都能看到,可以用Application 生命週期從http服務的啟動到http服務的關閉 或是用檔案讀寫fopen() fread() fwrite() 這就要查一下指令怎麼用了
請問 statusCode == 200 200 是什麼意思@@
http的狀態回應碼,跟封包的規格有關 常見的有 404 not found 403 Forbidden 401 Unauthorized 500 Internal Server Error .....等等 可以參考此文件 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
不好意思 還有就是 request respone 他們的 再跟 server 互動的方式 邏輯 概念 我不太懂耶 可以解釋一下嗎 先發出請求 有了回應 用回應去做 請求 ????
基本上大致是這樣沒錯,所以瀏覽器才會在按下送出後會刷新頁面呀 其餘的沒講到的細節有,OSI 7層 因為http走tcp所以會三向交握,建立連線 假設是登入畫面,在送出帳密後 PHP等伺服器端程式大多會在伺服器上建立Session 然後給你一個Session ID 大概是這樣,如有錯誤煩請指正
先 謝了 有問題再問 哈!!
已測試成功,非常感謝! 想請問一下,如果網頁端回傳一個陣列 手機端該如何接收呢?
可以做成String然後給Android去切 要不然就是產生XML或json給Android去parse
你好 雖然不知道在寫什們==因為我是新新新新新手 在上面的文章我跟著照做 httpPostTest.htm httpPostTest.PHP 這兩個跟著做好像是成功了 從httpPostTest.htm打字傳送到 httpPostTest.php應該是沒錯八@@"看了上面的對話 (案傳送後他自己跳httpPostTest.php) 可是問題就在這裡X-( 因為專題目的是Android傳送至MySQL資料庫 所以感覺這篇文章很贊可以先測試看看 所以我就把您的程式是用了一下 現在出現錯誤的地方是這邊 MAIN.JAVA的這三行前面都出現紅色的(X) (X) setContentView(R.layout.main); (X) txtMessage = (EditText) findViewById(R.id.txt_message); (X) sendBtn = (Button) findViewById(R.id.send_btn); 另外這邊也有一個(X)程式執行不了 AndroidManifest.xml (X) android:label="@string/app_name"> 抱歉問題很多因為剛接觸程式這部份 沒學過這個所以看不懂這類的錯誤是什們意思 ><可以的話麻連您是否哪邊出了錯 如果資料太大可以寄給我>< speed0032@hotmail.com.tw
從res/layout/main.xml下手 xx都過了記得要project>clean
><板大有解嗎? 真的不知道這幾行錯宰哪! 麻煩板大一下 感謝無私分享
謝謝 可是我看我的 res/layout/main.xml裡面都沒出現XX呢! 要如何下手 不明白 抱歉真的不太懂 剛摸這個
按ctrl+b就有了 建議你先研讀版面設計和程式抓控制項的部分 這篇對你來說太困難了,慢點再看
版大寫得很好優~可是我的跑的程式依然只在手機上出現data=....,就是"印出網路回傳的文字"這部分,在網頁部分(php)還是沒有,我有透過html傳值是成功的,想要問一下是哪裡出了問題?如果想要知道連線有沒有建立成功要怎麼判斷呢?? 感謝喔~~~~
html傳值跟android傳值這二者是沒有關係的唷 不是說html傳值成功,android傳值就會出現 網頁部分(php)一定不會有,因為你沒有傳值給他 傳值----是單向的,從Client傳到Server,然後才從Server回傳結果給Client 這裡只是舉例說你可以"印出網路回傳的文字" 如果不要印出網路回傳文字,就要從 網頁部分(php) 下手 調整php程式碼 有沒有建立成功判斷可以用TCPView程式看看有沒有連進來 或是抓封包 所以對初學者比較簡單的方法,還是印出網路回傳的文字 如果沒有設定錯誤 就會看到一樣的東西
請問板大 如果要了解android的程式再寫些什們 還有要先讀版面設計+抓控制項的部份 有哪些書籍是您推薦比較好上手的媽? 謝謝版大回覆
我先說,我沒有在這裡幫那本書做廣告 就只是我看過的一些分享 ------------------- Google! Android 2手機應用程式設計入門 / 蓋索林(Gasolin)著 松崗 封面有個布丁 這本講的比較淺顯易懂,在版面的部分講得比較多 其他的就有點少 ------------------- Google Android手機APP開發入門 / 趙令文著 電腦人文化 封面有個大機器人 這本是講的比較全面一點 網路傳輸的範例光碟有漏 講View的章節有大表列出大部分常用的參數 以放layout檔居多,比較沒有逐行講解 ------------------- Google Android SDK開發範例大全 佘志龍等人著 悅知文化 這篇的程式碼有參考這本書 這本以範例為主,不建議初學者看 因為會太眼花撩亂 有部分程式碼寫的有點怪,不過這範圍很全面 這本書章節更新變成第三版 ------------------- 前進 Android Market!Google Android SDK 實戰演練 何孟翰著 悅知 這本多加了雲端應用這部分 相對的基本的版面設計篇幅少了許多 供您參考
謝謝板大提供參考 有問題我再問您 謝謝
佛心來的教學文,一看就懂,非常清楚!! 萬分的感激阿~~
請問版主 您的 環境設定! 及 參數! Android的部份
Project Name:隨便取 Package: com.J_Test.httpPostTest 建立Activity,名字: main 勾上Android 2.2 (API 8)
GOOD!!!!GOOD!!!
請問我照著上面做之後 當我按下模擬器傳值時 我的程式就會出現異常錯誤會中斷 我確定我 apache 有成功開啟 模擬器IP也更改過 但是還是不行 可以請問大概還有什麼原因會如此嗎?
錯誤訊息是?如果收到500伺服器內部錯誤表示你的PHP有錯 可以看php_error.log看看
版大..我照著你打的... 之後android 模擬器按send之後 它說xxx is not responed...我應該要怎樣處理><,,,求大大教學....
收到ANR(Activity Not Responed)? 用DDMS去看Log除錯...我有空再寫成一篇 最近比較忙
版大~我上面那篇的回文不要看(因為我耍笨了~哈哈哈) 我現在的問題是手機端可以按送出~下面也有顯示data=XXX 不過php網頁上卻沒有接收到~是怎麼回事呢?
php的部份要另外寫....
請問android的部分 按下送出後我會出現NullPointerException 初步猜測是75行產生例外,弄好久解決不了 請版大指點迷津
找到原因了 似乎只支援2.x版
專案是用Android 2.2去建的,不確定在2.2版本以下的能不能執行 但確定的是在2.2以上的版本是可以用的 再debug看看吧
1.我從Android傳至網頁,但是網頁收不到傳來直,但是我用網頁去傳,收的到值,不知道是哪裡出錯,Android是可以傳出來,但就是收不到
再試試看吧
請問若是用IIS的話 APACHE那邊的語法會變嗎?
會,你的語言就不會用PHP了 可能會改用ASP.net (C#/VB)或ASP 可以參考ASP的寫法,用Response.write
你好 我是超級新手 不好意思 有些笨問題想請教一下 想問一下如何把手機多筆輸入值(ex:id,name,email...)一個按鍵一次存入mysql中的同筆資料 還有如讀用手機透過php讀取資料庫的資料 謝謝
大大不好意思,經過以上測試結果都是成功的 但是若是要處理回傳值作為判斷的話 該使用甚麼語法來判斷傳質內容? (以下1為PHP回傳直) 目前小弟測試用result.startsWith("1") 及result.equals("1")皆無法判別 還請大大賜教,謝謝!
Android的部份..... 回傳的是String,如果你傳的是數字 可以用Integer.parseInt() 先初始個預設值,然後parseInt(),接個Exception避免轉換時出錯 再拿來比對
您好,想問一下 如果是將httpPostTest.php 存放在Appserv底下的www可以嗎?有需要改什麼嗎?
直接擺上去即可因為我的範例沒有接資料庫 需要自己加上
請問httpPostTest.php沒有印出data內容,就是傳值失敗的意思嗎? 非常感謝~~
已解決!! 感謝大大指點 不過小弟還有一個問題煩請版主指點 若是回傳質為多筆 如何在手機以listview的方式接收並且呈現?
您好,想請問一下 我在android端執行,輸入文字後,手機的toast是出現"The operation time out" 想請問是哪裡出問題了? apache確定有開啟 php也有放到資料夾 uriAPI 也有改 是android端程式的問題嗎?
你確定一下uriAPI是不是打成127.0.0.1或localhost? 可以試試看直接用android的瀏覽器瀏覽看看你打的網頁 (在php端修改一下,打點字上去,要不然android上會看到一片空白 因為根本沒有資料輸出呀) 確定android和伺服器之間溝通良好 uriAPI不能用127.0.0.1 因為這樣會指向android自己(不知道懂不懂我的意思)
附:網路權限也有設定了
*****
*****
*****
你好!! 請問若以eclipse實作 伺服器端和httpPostTest的程式該寫在哪個開發工具裡呢 小弟是新新新新手...
上面的httpPostTest是httpPostTest.htm 不好意思~!
放在apache裡的htdoc裡 環境的話可以用xampp或是appserv
版大您好! 我的uriAPI是打自己電腦的IP位址,不是打127.0.0.1或localhost 我也有用android的瀏覽器開我打的網頁,是可以連接的 我之前是用android2.1版做測試 現在換成了android2.2版做測試,是沒有出現"The operation timed out"了 但是現在我輸入文字按送出後,toast是出現"i>>? data=hello" 資料還是沒有傳過去 請問版大知道問題出在哪裡嗎?
php的部分只是傳過去在印出來給你看 需要善加修改...加入sql處理insert的部分
Android達人大大~ 哈哈~ 你真的太酷嚕~-XD 我趕快來刺跨賣~ 超感謝的ㄝ~
:目
感謝版大 成功了:)
:)
版大您好, 想請問一下 為什麼"印出網路回傳的文字"會出現亂碼? 我在資料庫連線上設定 mysql_query("SET NAMES 'utf-8'"); mysql_query("SET CHARACTER 'utf-8'"); mysql_query("SET CHARACTER_SET_CLIENT=utf-8"); mysql_query("SET CHARACTER_SET_RESULTS=utf-8"); 在android裡也有設定 httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); 但還是會出現亂碼,請問這是什麼問題呢?
看看資料庫的文字儲存是否為utf8_general_ci 再來還有PHP檔案的儲存時的編碼 notepad++打開來看的話應該要是ANSI as UTF-8 (純英文的文件會顯示ANSI除外)
不好意思 最後面三張圖 android傳值了之後 伺服端的網頁也會保存值嗎? 會像最後一張圖一樣顯示出來嗎? 請問你最後的圖是html傳的值還是android傳的值?
伺服端的網頁不會保存值嗎除非你用資料庫把它存起來 最後一張圖是html傳的值,是測試用 跟android無關 ------------------- 倒數第二張是Android用類似瀏覽器的方式傳值 這張是android傳的值 跟html無關
請問如果我想用POST的方法登入YAHOO帳號取得個人網頁資訊該如何實做呢?
這有困難....因為他們會加密
版大您好: 想教您幾個問題, 我在android端寫http post的方法 將資料傳到php接收 再用php把值存入資料庫 想請問 我在1.php 寫 session 在2.php echo出session的值 這是沒問題的 但是如果用android端做測試的話 會抓不到session的值 請問這個跟android端有關係嗎??
哈哈...被你發現到了 android是的確有這問題 不知道你對http連線的原理有沒有很了解? 伺服器使用session的話,session資料會存在伺服器上(這書上都有寫) 但是!!!!伺服器會傳一個session id給用戶端 (像是你去寄放物品的櫃台寄放東西,櫃台會交給你一把鑰匙一樣) 用鑰匙認顧客 回到Android.....伺服器有吐這把鑰匙給他,但他並沒有存下 不信的話你抓封包看看就知道了
*****
*****
在模擬器上面執行 會出現異常終止......
看DDMS的logcat
您好!我想請教一個問題 在android的模擬器上面執行 結果畫面出現的是 Connection to http://localhost:8080 refused 請問是哪個環節出了問題呢? 請給予指教,謝謝您
網址不能打localhost打實際IP
我想問一下... 以我理解...大大的文是不是在ANDROID傳DATA去PHP, PHP再傳回"data = "另加在android打的字串? 如果是我想問一下, 如果將ANDROID的DATA送去PHP,之後用PHP記住DATA的內容... 好像HTML用POST的方式去PHP頁一樣....
您好: 我剛看到上面有人回應說要post到yahoo去登入,我也有相同疑問,只是說我想做的只是用手機登入一般私人網站,那我應該怎麼去撰寫程式碼呢?謝謝
今天再試終於明白, 原本PHP已經收到了值, 不過在網頁不能直接出, 只在ANDROID直接出, 用PHP的ISSET就看到其實有值在$_post['data'] 真的謝謝大大這個很有用的資訊
:)
我想問一下: ANDROID傳DATA去PHP 為什麼在網頁的部分沒辦法顯示?
請爬文,留言有回覆
*****
*****
請問一下版主有在4.0測試過嗎? 我是在4.0上用app會直接關閉掉 在2.3.3上測試是OK的@@ 不知道版主有沒有問遇到這個問題
沒有測試過4.0耶,改天測試看看 ---- 留言更新: Android 4.0抓得比較嚴謹,沒有用執行緒不行 請參考新版文章 http://j796160836.pixnet.net/blog/post/30577968
對不起 想請問一下 如果兩個EditText 在傳遞的時候就必須要自己切嗎 有看到你提到JOSN的方式這個方式有具體的範例嗎??
JSON範例,敬請期待。
可以問你一下 伺服器那邊大概要怎麼判斷 android才能收到我想收到的東西呢... 因為都會收到PHP echo的全部程式碼 因為我主要是想要讓Android讀取資料庫的東西 想收到我指定的東西...
資料庫範例,敬請期待。
您好:請問我為何會出現"@drawable/icon"錯誤呢?謝謝
新版的Android SDK好像到R16版就將drawable底下的 icon.png改名叫ic_launcher.png了 先確認是否res/drawable資料夾(drawable/drawable-hdpi/drawable-ldpi/drawable-mdpi)底下 是否有icon.png這張圖 然後clean掉重新Build Project看看 如果找不到icon.png而有ic_launcher.png 改成@drawable/ic_launcher即可
先謝版主無私的分享 我有一個問題在取值的部分 有取到值,但也把原始碼給取了... 非常煩惱 環境:ASP.NET code: Response.Write("回傳值:" + strPost);
朋友使用ASP.net 有遇到像你一樣的問題 打開aspx的版面設計的原始碼 (會看到很多html語法) 刪除其html語法只剩下 類似以下的的語法 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestProject01._Default" %> 不能照樣copy唷,你專案的這一行會跟我的不一樣 再試試看
可以提供JSP網頁語法嗎? 目前我的JSP網頁顯示不出來我的資料 拜託! 可以幫幫我嗎?
非常感謝版主的答案 解決了
您好,感謝您的分享 如果角色對換,也就是 Server端: Android, 該如何實作?
好酷的功能唷! 我想這就要手動寫Socket了吧 模擬Apache伺服器的運作 學它一樣,收HTTP標頭,然後吐HTTP檔頭+內容回去 寫的時候要用writeByte() 改天有點空閒來寫這個範例
想請問版大 我試過用4.0是會有BUG的而改用2.3.3 是OK的 但是在send的時候他說的IP:xxx.xxx.xxx.xxx:80 refused (是定址IP,PORT有無都一樣被拒),想請問會有可能是什麼原因??
Android 4.0抓得比較嚴謹,沒有用執行緒不行 請參考新版文章 http://j796160836.pixnet.net/blog/post/30577968
請問如果是HTTPS而不是HTTP 好像需要認證 該怎改寫? 謝謝板大!!
HTTPS很難處理,小弟也在突破中
版主請問 我用android模擬器打123.他會出現data=123 可是桌面瀏覽器要怎麼跟著顯示data=123
這實在是太多人問了(汗) 若原理會了,套這些應該不難才是 請參考 http://j796160836.pixnet.net/blog/post/30577968
真是佛心來的分享~一次到位~謝謝Johnny, 如果想要主動由PHP吐字串給android,有什麼作建議呢?
可以循環地向伺服器抓呀,這樣就會好像PHP吐字串給Android了
PHP是否也有能力,能觸發android ap去接受字串呢?
請問Server端用JSP該怎麼寫才和您的範例會有一樣的效果呢? 我用的是Android 2.1版 Server回傳時,連JSP中的換行符號會都顯示在模擬器中的訊息螢幕
最近比較忙,還沒有把JSP環境架設起來 可否你提供你的寫法給我研究一下呢?
大大你好 我用你的方法傳送參數到我指定的asp網頁 但是這樣只能知道有無接收成功 我需要的功能是在網頁顯示出傳送完的結果(前面做的是登入的動作) 該怎麼實現呢?
可以參考新版,有加上資料庫 http://j796160836.pixnet.net/blog/post/30577968
你好,上面有位朋友問,如果要將網頁的東西放入listview來呈現,該怎麼弄 傳到android的資料可能有多筆,類似: 123 456 789 000 111 都要將它們弄成listview來呈現 困擾好久了>"<
最簡單的方法,用字串全部串起來: 123,456,789,000,111 然後從Android收到之後再切開顯示 或是使用XML,JSON.....
*****
*****
*****
*****
Johnny大 我已經把Server上的問題解決了! 感謝您熱心提供經驗。
您好, 我是傳值到PHP上然後回傳字串給android 但是我想依照那字串做換頁的動作,可是好像無法去判斷成功 我在 if(result != null) { if(result=="回傳成功") { memberok(); }} 但是他都不會成功執行result=="回傳成功"這判斷式 我也有用一個TextView查看result,的確是回傳成功的字串沒錯 請問我該如何修改才能判斷字串
這是字串的位址(address)和值的差別 物件類的(包含string)在內,要比較相同值用.equals() 你可能要找些Java相關的書籍來看 if(result=="回傳成功") 改成 if(result.equals("回傳成功"))
您好 我在寫一個註冊的部分 流程大概是註冊(android) -> 寫入資料庫(php) 這部分沒什麼問題 但是在修改資料的時候取值就發生錯誤了 在取得之前註冊的資料(php從資料庫撈出來傳給android)的時候 取的值好像跟之前的不一樣(不是亂碼的問題,表面上看起來一樣) 但是我用php回傳的值做mysql搜尋會找不到那筆資料 想請問是php回傳時的問題嗎? google很久了都找不太到解決的方法QAQ 感謝版主
可能我有點看不懂你敘述的方式,跟您分享一些debug上的技巧 取得之前註冊的資料(php從資料庫撈出來傳給android) 1. 這一段可以用瀏覽器去模擬Android去收php出來的資料 (光憑肉眼看html不準,要開原始碼來看) 2. 你可以試印看看當初查找的sql語法,把他丟進phpmyadmin看有沒有甚麼異狀 3. 至於編碼呢...剩下一個可能,Big5和UTF-8和Unicode的問題 (印象中好像是字碼不一樣),有個重點,UTF-8和Unicode感覺好像是一樣的,但其實不一樣 (曾經遇過類似的問題)
請問 從模擬器按下送出鍵之後,要在Toast看到輸入的值,並且在php網頁上看到財表示有輸入進去嗎? 我做出來是Toast跟php都沒看到輸入的值,但試用html就有看到 這些輸入的值是都會輸入到mysql資料庫嗎? 那可以從資料庫看到嗎? 謝謝:)
請問是否有提供JSP接收的語法呢?!
請問一下~如果說~我的填寫控格有2個以上~我不管怎麼測試!! 他都以data這個變數存取我的所有空格資料(我有在新增新的變數進去存資料)
可能是Android在列印的時候是data=XXXX 所以會誤認,查看看PHP的部份
大大你好 我的這行 sendBtn.setOnClickListener(this);他一職是錯誤 有顯示這行 The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (MainActivity)
你在import的時候,選到了 import android.content.DialogInterface.OnClickListener; 那個是給Dialog用的唷,正確的是 import android.view.View.OnClickListener; 平平都是OnClickListener,同款不同師傅XD
*****
*****
*****
*****
*****
抓下來的資料是中文的,在手機顯示出來卻是"???"號! 如何解決?
MySQL資料庫設定校正: utf8_unicode_ci
為什麼一案送出程式就會停止?
版大您好,我有個問題想請教,我從android上按下送出文字,怎麼讓他轉到網上,顯示我剛剛在textView上打的文字呢? 這個有提到嗎?
不好意思,想請問一下。 我的網站適用ASP.NET架設的, 依照你的方法的確可以抓到手機端DATA的值。 但是我想問你, 有辦法將<%%>內抓取到的值(例如 你上面程式碼request.form的值data) 放到我UI介面Label中嗎? (如 Label.text=data的值) 因為小弟是新手, 所以想請幫忙解惑。
寫個Handler然後把資料放上去 詳細請參考另一篇 http://j796160836.pixnet.net/blog/post/28766165
我用範例程式碼 在手持裝置上會出現亂碼 後來把 String strResult = EntityUtils.toString(httpResponse.getEntity()); 改成 String strResult = EntityUtils.toString(httpResponse.getEntity(), HTTP.UTF_8); 就好了 原因應該是只有送訊息是UTF8 取回訊息也應要使用UTF8
感謝Gohome大大分享指正
請問一下我Android手機模擬器可以把資料傳到資料庫去 但是我放到手機裡為什麼就會當機?
用DDMS的Logcat抓Log出來研究研究...