بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
خطای عجیب در گرفتن json
سلام
من در سرچ برنامم به مشکل خوردم
طرز کار هم اینطوریه که کاربر نام رو مینویسه و دسته بندی رو انتخاب میکنه و جستجو رو میزنه
حالا با استفاده از کتابخانه volley درخواستی به سمت سرور میفرسته و درخواست رو پردازش میکنه و مقادیر رو برمیگردونه
مشکل من اینه که مقادیر برگشتی به شکلی نامفهوم هستن
کد اندروید:
public class AppSearchList extends AppCompatActivity {
private ListView Applist;
private AdapterApp adapterApp;
private ArrayList<StructApp> apps=new ArrayList<StructApp>();
private ProgressDialog pDialog;
private String Name;
private int CategoryId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.app_search_list);
Bundle extras=getIntent().getExtras();
try{
Name=extras.getString("SEARCH_NAME");
CategoryId=extras.getInt("SEARCH_CATEGORY");
}catch (Exception e)
{
e.printStackTrace();
}
//set listview
Applist=(ListView) findViewById(R.id.AppSearchlist);
adapterApp=new AdapterApp(this,apps);
Applist.setAdapter(adapterApp);
pDialog = new ProgressDialog(this);
// Showing progress dialog before making http request
pDialog.setMessage("Loading...");
pDialog.show();
// Creating volley request obj
StringRequest appsearchRequest = new StringRequest(Request.Method.POST, GlobalVariables.readSearchUrl,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
Log.i("read from json",s);
/*
try {
JSONArray array = new JSONArray(s);
for (int i = 0; i < array.length(); i++) {
JSONObject obj = array.getJSONObject(i);
StructApp app = new StructApp();
app.setName(obj.getString("APP_NAME"));
app.setCost(obj.getInt("APP_PRICE"));
app.setIconUrl(obj.getString("APP_ICON"));
app.setRatingValue((float) obj.getDouble("APP_VOTE"));
apps.add(app);
}
hidePDialog();
adapterApp.notifyDataSetChanged();
} catch (JSONException e)
e.printStackTrace();
hidePDialog();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//Dismissing the progress dialog
hidePDialog();
//Showing toast
Toast.makeText(G.context, volleyError.getMessage().toString(), Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> searchParam = new HashMap<String, String>();
searchParam.put("AppFilter","app.APP_NAME=" +"\"" +Name+"\"");
searchParam.put("CategoryFilter","app.CAT_ID=" +"\"" +CategoryId+"\"");
return searchParam;
}
};
// Adding request to request queue
G.getInstance().addToRequestQueue(appsearchRequest);
@Override
public void onDestroy() {
super.onDestroy();
hidePDialog();
}
private void hidePDialog() {
if (pDialog != null) {
pDialog.dismiss();
pDialog = null;
}
}
}
کد php :
function readSearch() { $coonection=connectToDatabase(); $result=mysqli_query($coonection, "SELECT app.APP_NAME,app.APP_ICON,app.APP_VOTE,app.APP_PRICE FROM app INNER JOIN category ON app.CAT_ID = category.CAT_ID WHERE" . $_REQUEST['AppFilter'] . "AND" . $_REQUEST['CategoryFilter']); $output=array(); if(isset($result)){ while($row=mysqli_fetch_array($result)) { $record=array(); $record['APP_NAME']=$row['APP_NAME']; $record['APP_ICON']=$row['APP_ICON']; $record['APP_VOTE']=$row['APP_VOTE']; $record['APP_PRICE']=$row['APP_PRICE']; $output[]=$record; } echo json_encode($output); mysqli_close($coonection); } }
این هم از logcat :
این پروژه دانشگاهم هست.ممنون میشم کمکم کنید
+1
0
با توجه log ی گذاشتید خروجی تون درست نیست یعنی اصلا json ی درکار نیست، بهتره اول از کارکرد وب سرویس با تست کردن در مرورگر و افزونه هایی مثل postman مطمئن بشید بعد تو پروژه استفاده کنید. (8 سال پیش)
0
0
خیلی ممنون از راهنماییتون آقای نصرتی.علت خروجی صحیح نگرفتن رو فهمیدم اما من باید از سمت اندروید 2 پارمتر ارسال کنم تا کوئری کامل بشه!یعنی نحوه ارسال پارمتر ها اشتباهه؟نحوه صحیحش رو توضیح می دید؟لطف میکنید اگر پاسخ بدید (8 سال پیش)
0
0
اینجوری معلوم نمیشه کد های کامل پی اچ پی تون و آدرس فایل رو بفرستدی (8 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
Amin
8 سال پیش
0
0
یکسری تغییرات تو کدها دادم که اون ارور رو از بین برد ولی همچنان مقدار جیسون خالیه
searchParam.put("appfilter", "\"" + Name + "\"");
Log.i("LOG", "\"" + Name + "\"");
searchParam.put("catidfilter", "\"" + CategoryId + "\"");
Log.i("LOG", "\"" + CategoryId + "\"");
I/LOG﹕ "instagram"
I/LOG﹕ "2"
I/read from json﹕ []
کد php :
function readSearch() { $coonection=connectToDatabase(); //$_REQUEST['appfilter']="instagram"; //$_REQUEST['catidfilter']="2"; $result=mysqli_query($coonection, "SELECT app.APP_NAME,app.APP_ICON,app.APP_VOTE,app.APP_PRICE
FROM app INNER JOIN category ON app.CAT_ID = category.CAT_ID WHERE
app.APP_NAME= '" . $_REQUEST['appfilter'] . "' AND app.CAT_ID=" . $_REQUEST['catidfilter']); $output=array(); if(isset($result)){ while($row=mysqli_fetch_array($result)) { $record=array(); $record['APP_NAME']=$row['APP_NAME']; $record['APP_ICON']=$row['APP_ICON']; $record['APP_VOTE']=$row['APP_VOTE']; $record['APP_PRICE']=$row['APP_PRICE']; $output[]=$record; } echo json_encode($output); mysqli_close($coonection); } }
این رو هم بگم وقتی کامنت های کد بالا رو (علامت //) برمیدارم جیسون صحیح بهم میده :
[{"APP_NAME":"Instagram","APP_ICON":"http:\/\/192.168.1.36\/AppStore-server\/Icon\/instagram.png","APP_VOTE":"3.7","APP_PRICE":"0"}]
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .