網頁撈出資料回傳至手機端
發表人:
learner
積分: 44
積分: 44
請問,我在網頁端從資料庫裡撈出一串資料(例如:會員姓名(兩個以上))
那我要如何把這串資料傳回手機端並讓手機端顯示在ListView裡?
是用陣列方式或是有其他方法呢?
那我要如何把這串資料傳回手機端並讓手機端顯示在ListView裡?
是用陣列方式或是有其他方法呢?
發表人:
learner
積分: 44
積分: 44
我找到解析XML的方法了,也把撈到的資料轉成XML擋了
但是我不知道怎麼把轉好的XML檔傳回給android解析
而且傳回來後要先儲存在android(例如:sd卡)再讀取?
還是android端收到檔案可以直接解析?
但是我不知道怎麼把轉好的XML檔傳回給android解析
而且傳回來後要先儲存在android(例如:sd卡)再讀取?
還是android端收到檔案可以直接解析?
發表人:
Seachaos
積分: 2432
積分: 2432
Hi,
我建議你用JSON格式
這個會比XML簡單的多
從Server來的資料不用存在記憶卡上就可以解析了
不介意的話可以貼上一些你的程式碼,我也許可以幫你看看
另外要回傳給Server的話,資料也是可以用POST的方式
這邊有Android POST的範例
http://www.myandroid.tw/bbs-topic-21.sea
我建議你用JSON格式
這個會比XML簡單的多
從Server來的資料不用存在記憶卡上就可以解析了
不介意的話可以貼上一些你的程式碼,我也許可以幫你看看
另外要回傳給Server的話,資料也是可以用POST的方式
這邊有Android POST的範例
http://www.myandroid.tw/bbs-topic-21.sea
發表人:
訪客
請問有JOSN的範例嗎??
還有,我的網頁端是用ASP.NET,該怎麼使用JSON的方法??
還有,我的網頁端是用ASP.NET,該怎麼使用JSON的方法??
發表人:
Seachaos
積分: 2432
積分: 2432
Android的話如下
[sea:javaCode]
String json = "{\"list1\":{\"1\":\"test\",\"2\":\"test2\",\"3\":\"test3\"},\"url\":\"myandroid.tw\"}";
try {
JSONObject j = new JSONObject(json);
j.getString("url"); // myandroid.tw;
JSONObject list = j.getJSONObject("list1");
list.getString("1"); //test
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
[/sea]
我這邊有PHP的範例
http://www.myandroid.tw/bbs-topic-996.sea
ASP相信也有相關的Funciton可以用
沒有的話應可以自已包 (JSON格式比XML簡單)
[sea:javaCode]
String json = "{\"list1\":{\"1\":\"test\",\"2\":\"test2\",\"3\":\"test3\"},\"url\":\"myandroid.tw\"}";
try {
JSONObject j = new JSONObject(json);
j.getString("url"); // myandroid.tw;
JSONObject list = j.getJSONObject("list1");
list.getString("1"); //test
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
[/sea]
我這邊有PHP的範例
http://www.myandroid.tw/bbs-topic-996.sea
ASP相信也有相關的Funciton可以用
沒有的話應可以自已包 (JSON格式比XML簡單)
發表人:
訪客
謝謝大大,我大概懂了
只是我沒有找到ASP.NET的JSON方法,只好自己包了
[sea:phpCode]
Dim json As String = "[" //先給一個左括號
For s As Integer = 0 To ds.Tables("result").Rows.Count - 1
json += {'Book_NAME' : ' " & ds.Tables("result").Rows(s).Item(0) & "'}," //把資料填進JSON裡
Next
json.Remove(json.Length - 1)//因為用for loop的關係,會多一個",",所以把它刪掉
json = "]" //補右括號
Response.Write(json)
[/sea]
網頁那邊我視這樣包的,不知道格式對不對QQ
只是我沒有找到ASP.NET的JSON方法,只好自己包了
[sea:phpCode]
Dim json As String = "[" //先給一個左括號
For s As Integer = 0 To ds.Tables("result").Rows.Count - 1
json += {'Book_NAME' : ' " & ds.Tables("result").Rows(s).Item(0) & "'}," //把資料填進JSON裡
Next
json.Remove(json.Length - 1)//因為用for loop的關係,會多一個",",所以把它刪掉
json = "]" //補右括號
Response.Write(json)
[/sea]
網頁那邊我視這樣包的,不知道格式對不對QQ
發表人:
learner
積分: 44
積分: 44
剛剛的語法錯了 這個才對@@
[sea:phpCode]
Dim json As String = "["
For s As Integer = 0 To ds.Tables("result").Rows.Count - 1
If s < ds.Tables("result").Rows.Count - 1 Then
json += "{'Book_NAME' : '" & ds.Tables("result").Rows(s).Item(0) & "'},"
ElseIf s = ds.Tables("result").Rows.Count - 1 Then
json += "{'Book_NAME' : '" & ds.Tables("result").Rows(s).Item(0) & "'}"
End If
Next
json += "]"
Response.Write(json)
[/sea]
輸出這串
[{'Book_NAME' : '高爾夫球的揮桿訣竅'},{'Book_NAME' : '運動與健康'},{'Book_NAME' : '乒乓球教學與訓練'}]
這樣格式對嗎??
[sea:phpCode]
Dim json As String = "["
For s As Integer = 0 To ds.Tables("result").Rows.Count - 1
If s < ds.Tables("result").Rows.Count - 1 Then
json += "{'Book_NAME' : '" & ds.Tables("result").Rows(s).Item(0) & "'},"
ElseIf s = ds.Tables("result").Rows.Count - 1 Then
json += "{'Book_NAME' : '" & ds.Tables("result").Rows(s).Item(0) & "'}"
End If
Next
json += "]"
Response.Write(json)
[/sea]
輸出這串
[{'Book_NAME' : '高爾夫球的揮桿訣竅'},{'Book_NAME' : '運動與健康'},{'Book_NAME' : '乒乓球教學與訓練'}]
這樣格式對嗎??
發表人:
Seachaos
積分: 2432
積分: 2432
沒有錯
可以用以下程式碼驗證你的JSON格式
[sea:javaCode]
String json = "[{'Book_NAME' : '高爾夫球的揮桿訣竅'},{'Book_NAME' : '運動與健康'},{'Book_NAME' : '乒乓球教學與訓練'}]";
try {
JSONArray j = new JSONArray(json);
for(int ax=0;ax<j.length();ax++){
JSONObject jobj = j.getJSONObject(ax);
Log.i("msg",jobj.getString("Book_NAME"));
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
[/sea]
(Android的JSON有分Array和Object,這是比較要注意的地方)
可以用以下程式碼驗證你的JSON格式
[sea:javaCode]
String json = "[{'Book_NAME' : '高爾夫球的揮桿訣竅'},{'Book_NAME' : '運動與健康'},{'Book_NAME' : '乒乓球教學與訓練'}]";
try {
JSONArray j = new JSONArray(json);
for(int ax=0;ax<j.length();ax++){
JSONObject jobj = j.getJSONObject(ax);
Log.i("msg",jobj.getString("Book_NAME"));
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
[/sea]
(Android的JSON有分Array和Object,這是比較要注意的地方)
發表人:
learner
積分: 44
積分: 44
謝謝 Seachaos大大的指教!!
發表人:
learner
積分: 44
積分: 44
不好意思,又出現問題了
我沒辦法執行程式,它每次都說意外中止
請問,manifest.xml裡面有要另外設定嗎??
我沒辦法執行程式,它每次都說意外中止
請問,manifest.xml裡面有要另外設定嗎??
發表人:
Seachaos
積分: 2432
積分: 2432
Hi,
你有加入
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
嗎?
如果你的程式需要網路的話就要加入這個到AndroidManifest.xml中
你有加入
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
嗎?
如果你的程式需要網路的話就要加入這個到AndroidManifest.xml中
發表人:
learner
積分: 44
積分: 44
有,因為基本上都要用到網路,所以有加
我貼androidmanifest.xml給你看看好了
[sea:javaCode]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="eeasybook_f.book"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Eeasybook_fActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="Eshop"></activity>
<activity android:name="Grid_viewActivity"></activity>
<activity android:name="Map"></activity>
<activity android:name="TabhostActivity"></activity>
<uses-library android:name="com.google.android.maps" />
<activity android:name="ForgetPW"></activity>
<activity android:name="Download"></activity>
</application>
</manifest>
[/sea]
我貼androidmanifest.xml給你看看好了
[sea:javaCode]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="eeasybook_f.book"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Eeasybook_fActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="Eshop"></activity>
<activity android:name="Grid_viewActivity"></activity>
<activity android:name="Map"></activity>
<activity android:name="TabhostActivity"></activity>
<uses-library android:name="com.google.android.maps" />
<activity android:name="ForgetPW"></activity>
<activity android:name="Download"></activity>
</application>
</manifest>
[/sea]
發表人:
訪客
我連解析方式與要被解析的資料一起附上好了
資料:{"Book" : {"Book_INFO" : [{"Book_NAME" : "高爾夫球的揮桿訣竅","Book_PATH" : "GG"},{"Book_NAME" : "運動與健康","Book_PATH" : "GG"},{"Book_NAME" : "乒乓球教學與訓練","Book_PATH" : "GG"},{"Book_NAME" : "健康是走出來的","Book_PATH" : "E:\BOOK\book_info\G0101.epub"}]}}
解析方式:
[sea:javaCode]
httpRequest1.setEntity(new UrlEncodedFormEntity(nvps0, HTTP.UTF_8));
HttpResponse httpResponse=new DefaultHttpClient().execute(httpRequest1);
if(httpResponse.getStatusLine().getStatusCode()==200)
{
StringBuilder builder = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent())); //這裡是網路上看到的,但是他打的是B?redReader,所以我不確定用BufferedReader對部隊
for(String s = bufferedReader.readLine(); s != null; bufferedReader.readLine())
{
builder.append(s);
}
Log.i("cat", ">>>>>>" + builder.toString());
JSONObject jsonObject = new JSONObject(builder.toString()).getJSONObject("Book");
JSONArray jsonArray = jsonObject.getJSONArray("Book_INFO");
String[] json = new String[jsonArray.length()];
for(int i = 0; i < jsonArray.length(); i++)
{
JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i);
json[i] = jsonObject2.getString("Book_NAME");
}
listCats.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, json));
}
[/sea]
資料:{"Book" : {"Book_INFO" : [{"Book_NAME" : "高爾夫球的揮桿訣竅","Book_PATH" : "GG"},{"Book_NAME" : "運動與健康","Book_PATH" : "GG"},{"Book_NAME" : "乒乓球教學與訓練","Book_PATH" : "GG"},{"Book_NAME" : "健康是走出來的","Book_PATH" : "E:\BOOK\book_info\G0101.epub"}]}}
解析方式:
[sea:javaCode]
httpRequest1.setEntity(new UrlEncodedFormEntity(nvps0, HTTP.UTF_8));
HttpResponse httpResponse=new DefaultHttpClient().execute(httpRequest1);
if(httpResponse.getStatusLine().getStatusCode()==200)
{
StringBuilder builder = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent())); //這裡是網路上看到的,但是他打的是B?redReader,所以我不確定用BufferedReader對部隊
for(String s = bufferedReader.readLine(); s != null; bufferedReader.readLine())
{
builder.append(s);
}
Log.i("cat", ">>>>>>" + builder.toString());
JSONObject jsonObject = new JSONObject(builder.toString()).getJSONObject("Book");
JSONArray jsonArray = jsonObject.getJSONArray("Book_INFO");
String[] json = new String[jsonArray.length()];
for(int i = 0; i < jsonArray.length(); i++)
{
JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i);
json[i] = jsonObject2.getString("Book_NAME");
}
listCats.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, json));
}
[/sea]
發表人:
Seachaos
積分: 2432
積分: 2432
這邊要注意JSONObject和JSONArray的不同
JSONArray jsonArray = jsonObject.getJSONArray("Book_INFO");
可能要換成
JSONObject
因為你的格式是
"Book" : {"Book_INFO"
JSONArray jsonArray = jsonObject.getJSONArray("Book_INFO");
可能要換成
JSONObject
因為你的格式是
"Book" : {"Book_INFO"
發表人:
learner
積分: 44
積分: 44
可是這串
{"Book_INFO" : [{"Book_NAME" : "高爾夫球的揮桿訣竅","Book_PATH" : "GG"},{"Book_NAME" : "運動與健康","Book_PATH" : "GG"},{"Book_NAME" : "乒乓球教學與訓練","Book_PATH" : "GG"},{"Book_NAME" : "健康是走出來的","Book_PATH" : "E:\BOOK\book_info\G0101.epub"}]}
不是代表"Book_INFO"是array嗎??
"Book_INFO"帶了三個陣列元素
{"Book_INFO" : [{"Book_NAME" : "高爾夫球的揮桿訣竅","Book_PATH" : "GG"},{"Book_NAME" : "運動與健康","Book_PATH" : "GG"},{"Book_NAME" : "乒乓球教學與訓練","Book_PATH" : "GG"},{"Book_NAME" : "健康是走出來的","Book_PATH" : "E:\BOOK\book_info\G0101.epub"}]}
不是代表"Book_INFO"是array嗎??
"Book_INFO"帶了三個陣列元素
發表人:
Seachaos
積分: 2432
積分: 2432
是的
這串
{"Book_INFO" : [{"Book_NAME"…
就會變成Book_INFO是一個Array
底下有3個Object
(JSON的Array和Object在Android上要注意操作方式)
這串
{"Book_INFO" : [{"Book_NAME"…
就會變成Book_INFO是一個Array
底下有3個Object
(JSON的Array和Object在Android上要注意操作方式)
發表人:
小Sharon
積分: 2
積分: 2
樓主你好:
我想請問一下,由於文章有提到"如何把這串資料傳回手機端並讓手機端顯示在ListView裡"
所以想請問樓主要如何"當SERVER接收到Android(client端)所輸入並上傳之資料至MySQL後,可以讓Server自動PUSH訊息給其他USER(其他台Android手機並顯示視窗畫面以告知User)"
這是我的Email:chensuru04351913@gmail.com
希望樓主可以回信,因為有點急,不知道要用甚麼方式來實現讓Server自動PUSH訊息給其他USER
我想請問一下,由於文章有提到"如何把這串資料傳回手機端並讓手機端顯示在ListView裡"
所以想請問樓主要如何"當SERVER接收到Android(client端)所輸入並上傳之資料至MySQL後,可以讓Server自動PUSH訊息給其他USER(其他台Android手機並顯示視窗畫面以告知User)"
這是我的Email:chensuru04351913@gmail.com
希望樓主可以回信,因為有點急,不知道要用甚麼方式來實現讓Server自動PUSH訊息給其他USER
發表人:
訪客
如果你是要Push這種機制的話
可以看看 Google的GCM
http://developer.android.com/guide/google/gcm/index.html
可以看看 Google的GCM
http://developer.android.com/guide/google/gcm/index.html