کلیدستان

نسخه‌ی کامل: ساخت JSONArray در وب سرویس و دریافت آن در برنامه
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام
وقت بخیر
من از کدهای زیر برای گرفتن اطلاعات از دیتابیس سمت سرور و تبدیل اون به JSONArray استفاده می کنم :

کد پی‌اچ‌پی:
require_once 'include/DB_Connect.php';
      
// connecting to database
      
$db = new DB_Connect();
      
$db->connect();
      
$id intval($_POST['id']);
 
      
$result mysql_query("SELECT * FROM testup WHERE id > $id");
      while(
$user mysql_fetch_array($result))
      {
          
$response["success"]                 = 1;
          
$response["users"]["id"]      = $user["id"];
          
$response["users"]["family"]      = $user["family"];
          
$response["users"]["phone"]      = $user["phone"];
           
          echo 
json_encode($response);
      } 

و برای دریافتشون در برنامه و افزودن به دیتابیس از این کدها استفاده می کنم :

کد پی‌اچ‌پی:
JSONArray json_user json.getJSONArray("user");
                                for (
int i 0json.length(); i++) {
                                    
JSONObject objJson json_user.getJSONObject(i);
                                               
// here you can get id,name,city...
                                    
String id objJson.getString("id");
                                    
String family =objJson.getString("family");
                                    
String phone=objJson.getString("phone");
                                   
db.adduser(idfamilyphone);
                               } 

و کدهای دیتابیس برنامه برای افزودن اطلاعات :

کد پی‌اچ‌پی:
public void adduser(String idString familyString phone){
         
        
ContentValues values = new ContentValues();
        
values.put("id"id);
        
values.put("family"family);
        
values.put("phone"phone);
         
        
mydb.insert("testup"nullvalues);
 
    } 

اما این کار نمیکنه ، ممکنه چک کنید که من کجا رو اشتباه کردم؟

این رو تو لاگ میبینم :

کد پی‌اچ‌پی:
03-28 21:05:10.735E/JSON(7613): {"tag":"updb","success":1,"error":0,"users":{"id":"2","family":"tamanae","phone":"654321"}}{"tag":"updb","success":1,"error":0,"users":{"id":"3","family":"karami","phone":"987654"}}{"tag":"updb","success":1,"error":0,"users":{"id":"4","family":"nafari","phone":"456789"}} 

البته این کد رو هم برای وب سرویس امتحان کردم  :

کد پی‌اچ‌پی:
require_once 'include/DB_Connect.php';// connecting to database
$db = new DB_Connect();
$db->connect();
$id intval($_POST['id']);
 
 
$response = Array();
 
 
$result mysql_query("SELECT * FROM testup WHERE id > $id");
while(
$user mysql_fetch_array($result))
{
      
    
$response[] = $user;
}
 
 
echo 
json_encode(Array("success" => 1"users" => $response)); 

اما کار نکرد و این رو تو لاگ میبینم :

کد پی‌اچ‌پی:
03-29 18:03:02.646E/JSON Parser(14069): Error parsing data org.json.JSONExceptionEnd of input at character 0 of 

میشه بگید ایرادم کجاست و باید از چه کدی استفاده کنم؟
دوست عزیز میشه لاگ کامل بفرستیدتا ببینیم مشکل از چیه؟.
کل لاگ همین بود که فرستادم عزیز
اگه نیاز هست پروژه رو بفرستم کل فایل هاشو خودتون تست کنید
دوست عزیز شما وقتی کد php اجرا میکنید(اصلا بدون کدهای اپلیکیشن)..اطلاعات جیسون به درستی نمایش داده میشه و اطلاعات از سمت سرور درست خوانده میشود؟
والا من اصلا php بلد نیستم این کد های وب سرویس رو به کسی گفتم واسم نوشته ، نمیدونم چجوری باید یه پیجی بسازم که تست کنم چون ورودی ها رو به روش post میگیره نمیشه تو url مقادیر رو فرستاد
این لینک وب سرویس هست :

http://aghsatiha.com/testup/

باید این مقادیر براش ارسال شه :
tag =updb

و id = 1
کلا 4 تا رکورد دارم پس ای دی رو برابر 1 باید فرستاد که 3تا رکورد دیگه رو نمایش بده
اگه براتون مقدور هست صفحه تستش رو برای php بسازید ممنون میشم
یه مشکل املایی بود که حل شد. الان آپدیت کار میکنه با کد های زیر اما مشکلی که هست این هست که طبق این کد ها، من 3 تا ردیف اطلاعات دارم میفرستم و در دیتابیس برنامه هم 3 بار کار ذخیره سازی انجام میشه و 3 تا رکورد جدید اضافه میشه
اما تنها مشکلی که هست این هست که هر 3 رکورد مقادیر یکسانی دارن و مقادیرشون برابر رکورد اولی هست که از سرور برمیگرده

کد های اندروید :

کد پی‌اچ‌پی:
JSONObject json_user json.getJSONObject("user");
                                for (
int i 0json_user.length(); i++) {
                                    
String id json_user.getString(TAG_ID);
                                    
String family json_user.getString(TAG_FAMILY);
                                    
String phone json_user.getString(TAG_PHONE); 
                                   
db.adduser(idfamilyphone);
                               } 

رکوردهای ورودی به صورت زیر هست :

کد پی‌اچ‌پی:
{"id":"2","family":"tamanae","phone":"654321"}
{
"id":"3","family":"karami","phone":"987654"}
{
"id":"4","family":"nafari","phone":"456789"

اما فقط این رکورد در دیتابیس ثبت میشه 3 بار :

کد پی‌اچ‌پی:
{"id":"2","family":"tamanae","phone":"654321"
اینم تست کردم جواب نداد :

کد پی‌اچ‌پی:
JSONArray json_user json.getJSONArray("user");
                                for (
int i 0json_user.length(); i++) {
                                
JSONObject objJson json_user.getJSONObject(i);
                                     
// here you can get id,name,city...
                                    
String id objJson.getString("id");
                                    
String family objJson.getString("family");
                                    
String phone objJson.getString("phone");
                                   
db.adduser(idfamilyphone);
                               } 
دوست عزیز بعد از این دستورتون

کد پی‌اچ‌پی:
    JSONArray json_user json.getJSONArray("user"); 

json_user تبدیل کنید به یک رشته و بعدش نتیجه رو داخل یک تکست ویو نمایش دهید..میخوام ببینم فرمت گرفته شده چه جوری هست.
از این کد استفاده کردم برای نمایش اما از settext ایراد میگیره

کد پی‌اچ‌پی:
TextView etelaat = (TextViewfindViewById(R.id.etel);
                                JSONArray json_user json.getJSONArray("user");
                                etelaat.setText((CharSequencejson_user);

  
از این دستور استفاده کن

کد پی‌اچ‌پی:
String s=json_uset.toString();
etelate.setText(s); 
حل شد بهروز جان ممنون