Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > Mobile > Mobile Forum > มีปัญหา android ดึงข้อมูลจาก server ไม่ได้ ลองทำ connect server backgroud ตามเว็บบอร์ดครับ



 

มีปัญหา android ดึงข้อมูลจาก server ไม่ได้ ลองทำ connect server backgroud ตามเว็บบอร์ดครับ

 



Topic : 091255



โพสกระทู้ ( 61 )
บทความ ( 0 )



สถานะออฟไลน์






ตามโคดครับ ถ้ามันดึงข้อมูลไม่ได้ ผมกำหนดให้มันแสดง"เกิดข้อผิดพลาดในการดึงข้อมูล" สงสัยมันส่งและรับค่า ไม่ได้ ท่านใด เคยเจอปัญหาเหมือนผม ช่วยด้วยนะครับ ผมทำตามกะทู้นี้ครับ http://www.androidcode.in.th/2012/?p=383 ลองก็อบโคดมาทำ ยังไม่ได้ดัดแปลงอะไร ก้อรันไม่ผ่านเฉยเลย ขอบคุณนะครับเป็นกรณีศึกษาครับ

ไฟล์ json

Code (PHP)
<?php
    $host = "localhost";
    $user = "user";
    $pass = "pass";
    $db = "db_name";
 
    mysql_connect($host,$user,$pass);
    mysql_query("SET NAMES UTF8");
    mysql_query("USE $db");
 
    $age = $_REQUEST['age'];
    $sql = "SELECT * FROM sample_connect_server WHERE age='$age'";
    $result = mysql_query($sql);
    if($result){
        while($row = mysql_fetch_array($result))
            $data[] = $row;
 
        $json = array('status' => "OK",'result' => $data);
    }else{
        $json = array('status' => "ERROR");
    }
 
    print(json_encode($json));
    mysql_close();
?>


ฐานข้อมูล

Code (SQL)
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
 
CREATE TABLE IF NOT EXISTS `sample_connect_server` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
 
INSERT INTO `sample_connect_server` (`id`, `name`, `age`) VALUES
(1, 'PETDO', 20),
(2, 'AAA', 20);







mainactivity.java

Code (Android-Java)
package th.in.androidcode.connectserverbackground;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
	
	private ListView listView;
	private ArrayList<String> list;
	private ArrayAdapter<String> arrayAdapter;
	private ConnectServer connectServer;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//เชื่อม listView กับ View
		listView = (ListView)findViewById(R.id.listView);
		
		//สร้างตัวเชื่อมต่อกับ Server ไปที่ URL ที่กำหนด
		connectServer = new ConnectServer(this, "http://www.newsrealtionsthailand.com/android/connect_server.php");
		
		//เพิ่มการส่งค่า age มีค่า 20 แบบ post
		connectServer.addValue("age","20");
		
		//เชื่อมต่อกับ Server
		connectServer.execute();
	}
	
	//ถ้าดึงข้อมูลจาก Server เสร็จแล้ว จะมาทำงานที่ Function นี้
	public void setList(ArrayList<String> list){
		this.list = list;
		arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, this.list);
		listView.setAdapter(arrayAdapter); 
	}

	//ถ้าไม่สามารถเชื่อมต่อกับ Server ได้จะมาทำงานที่ Function นี้
	public void cannotConnectToServer() {
		Toast.makeText(this, "ไม่สามารถเชื่อมต่อกับ Server", Toast.LENGTH_LONG).show();
	}
	
	//ถ้าดึงข้อมูลจาก Server มีปัญหา จะมาทำงานที่ Function นี้
	public void errorConnectToServer() {
		Toast.makeText(this, "เกิดขอผิดพลาดในการดึงข้อมูล", Toast.LENGTH_LONG).show();
	}
}






connectserver.java

Code (Android-Java)
package th.in.androidcode.connectserverbackground;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
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.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;

public class ConnectServer extends AsyncTask<String, Integer, String>{
	private HttpPost httppost;
	private HttpClient httpclient;
	private List<NameValuePair> nameValuePairs;
	private DialogConnect dialogConnect;
	private Context context;
	
	ConnectServer(Context context,String URL){
		this.context = context;
		
		//สร้างส่วนประกอบที่จำเป็นในการเชื่อมกับ Server
		this.httpclient = new DefaultHttpClient();
		this.httppost = new HttpPost(URL);
		this.nameValuePairs = new ArrayList<NameValuePair>();
		
		//สร้าง Dialog ตอนเชื่อมต่อกับ Server
		//มีการส่ง ConnectServer ให้กับ Dialog เพื่อใช้ในการยกเลิก
		dialogConnect = new DialogConnect(this.context, this);
		dialogConnect.setTitle(this.context.getString(R.string.app_name));
		dialogConnect.setMessage("กรุณารอสักครู่");
	}
	
	//Function สำหรับเพิ่มตัวแปรในการส่งค่าแบบ Post
	public void addValue(String key,String value){
		nameValuePairs.add(new BasicNameValuePair(key, value));
	}
	
	//ก่อนที่จะทำ doInBackground จะทำงานที่ Function นี้ก่อน
	protected void onPreExecute() {
		dialogConnect.show();
	}
	
	//เริ่มทำงานแบบ Background
	protected String doInBackground(String... params) {
		InputStream is = null;
		String result = null;
		
		//เริ่มการเชื่อมต่กับ Server
        try {
        	//ทำการส่งตัวแปรต่างๆ ในรูปแบบของ UTF-8
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
            
            
            //อ่านผลลัพธ์ในรูปแบบของ UTF-8
        	BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
        	StringBuilder sb = new StringBuilder();
        	String line = null;
        	while ((line = reader.readLine()) != null) {
        		sb.append(line + "\n");
        	}
        	
        	is.close();
        	result = sb.toString();
        	
        //ถ้าขณะเชื่อมต่อกับ Server มีปัญหา จะแสดง Log Error
        } catch (ClientProtocolException e) {
        	Log.e("ConnectServer", e.toString());
        } catch (IOException e) {
        	Log.e("ConnectServer", e.toString());
        }

		return result;
	}
	
	//ถ้าทำงานที่ doInBackground เสร็จแล้ว จะมาทำงานที่ Function นี้
	protected void onPostExecute(String result) {
		//list ที่ใช้เก็บข้อมูล
		ArrayList<String> list = new ArrayList<String>();
		
		//ถ้า result เป็น null คือ ไม่สามารถเชื่อมต่อกับ server ได้
		//ถ้าเชื่อมต่กับ server ได้ จะทำงานต่อไปนี้
		if(result != null){
			//เริ่มการแปลง JSON เป็นข้อมูล
			try {
				//แปลงผลลัพธ์ที่ได้มาเป็น JSON Object
	            JSONObject jObject = new JSONObject(result);
	            
	            //ถ้าถึงข้อมูลจาก database ได้จะมีผลลัพธ์ status กลับมาว่า OK
	            if(jObject.getString("status").equals("OK")){
	            	//แปลงผลลัพธ์ที่ได้มาเป็น JSON Array
	            	JSONArray jResult = jObject.getJSONArray("result");
	            	
	            	//ดึงขนาดของข้อมูลใน jResult
	            	int size = jResult.length();
	            	
	            	//วน Loop เอาค่าใส่ใน List
	            	for(int i=0;i<size;i++){
	            		String data = "ID : "+ jResult.getJSONObject(i).getString("id") + "\n"
	            					  + "Name : " + jResult.getJSONObject(i).getString("name") + "\n"
	            					  + "Age : " + jResult.getJSONObject(i).getString("age");
	            		list.add(data);
	            	}
	            	
	            //ถ้าดึงข้อมูลจาก database มีปัญหาจะแสดง error
	            }else{
	            	((MainActivity)context).errorConnectToServer();
	            }
	            ((MainActivity)context).setList(list);
	           
	        //ถ้าขณะแปลงข้อมูล JSON มีปัญหาจะมาทำงานส่วนนี้
	        } catch (JSONException e) {
	            Log.e("ConnectServer", "Error parsing data " + e.toString());
            	((MainActivity)context).errorConnectToServer();
	        }
			
		//ถ้าเชื่อมต่อกับ server ไม่ได้จะทำงานต่อไปนี้
		}else{
			((MainActivity)context).cannotConnectToServer();
		}
		
		dialogConnect.dismiss();
	}
}




Tag : Mobile, MySQL, Android







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-02-21 21:30:26 By : plomplam.2 View : 1870 Reply : 3
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ลองดูตัวนี้ครับ



Android Edit/Update Data to Web Server Database (Web Server)







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-02-22 06:40:17 By : mr.win
 


 

No. 2



โพสกระทู้ ( 61 )
บทความ ( 0 )



สถานะออฟไลน์


รันผ่านแล้วครับ ตอนแรกกำหนดให้มันรับค่า จาก emulator ความจริงต้องกำหนด host ของเครื่องโดยตรง ขอบคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-02-22 11:35:15 By : plomplam.2
 

 

No. 3



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ดีใจด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-02-22 12:12:14 By : mr.win
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : มีปัญหา android ดึงข้อมูลจาก server ไม่ได้ ลองทำ connect server backgroud ตามเว็บบอร์ดครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่