آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

گرفتن json با ارسال پارامتر به صورت Post (حل شد)

fandroid  7 سال پیش  7 سال پیش
0 0

با سلام خدمت دوستان و اساتید گرامی

یک مشکلی هست که دو روزه بهش بر خوردم هر کار کردم رفع نشد کل انجمن و گوگل و Stachoverflowو ... رو پیرامونش گشتم و راه های مختلفی که گفته بودن رو اعمال کردم مشکل رفع نشد دیگه گفتم از تجربه دوستان استفاده کنم شاید برای شما هم اتفاق افتاده باشه

خب مشکل اینه که وقتی با استفاده از متد post اطلاعاتی رو به سمت سرور میفرستم در جواب به همراه Json خالص تگ های Html که بیشتر اونها از نوع Font هستند نیز ارسال می شود

تو یکی از پست ها(این) خود استاد گفتن که احتمال داره یکسری کاراکتر های اضافی به اسم Bom ارسال بشه و بهEncodeکردن فایل سمت سرور مرتبط میشه ولی خب انجام دادم درست نشد

با گشتن بیشتر تو انجمن گفتم احتمالا سمت سرور مشکلی هست به همین خاطر کد سمت سرور رو دستی تست کردم ولی بازم جوابی نگرفتم

اینم بگم که احتمال دادم به خاطر دپریکیت شدن HttpClient باشه ولی تست مجددی که گرفتم درست کار کرد و حتی یک نکته جالب تر اینکه وقتی همین کار رو با روش Get فرستادم کاملا کد ها سالم اجرا شد  

اخطاری که از من میگیره دقیقا با پست یکی دوستامون یعنی (این) برابر هست و مو نمیزنه میخواستم ببینم میتونید بگید اشکال میتونه از کجا آب بخوره ؟

کد بخش سرور : (تابه read بدرستی کار میکند ولی مشکل در تابع search است)

 <?php
# header('Content-Type: text/html; charset=utf-8');
if(isset($_REQUEST['action'])){
$action=$_REQUEST['action'];
}else{
echo "not Operations";
}
if($action=="read"){
read();
}elseif($action=="search"){
search();
}
function connection(){
$con=mysqli_connect("localhost","root","","ariacad_app");
mysqli_set_charset($con, 'utf8');
if(mysqli_connect_errno()){
echo "this error is ".mysqli_connect_error();
return;
}
return $con;
}
function read(){
$con=connection();
$result=mysqli_query($con,"SELECT * FROM plan");

$output=array();
while($row=mysqli_fetch_array($result)){

$record=array();
$record['plan_id']=$row['plan_id'];
$record['plan_title']=$row['plan_title'];
$record['plan_code']=$row['plan_code'];
$record['plan_price']=$row['plan_price'];
$record['plan_substruction']=$row['plan_substruction'];
$record['plan_height']=$row['plan_height'];
$record['plan_width']=$row['plan_width'];

$output[]=$record;
}
# print_r($output);
# echo "<br>";
echo json_encode($output);
}
function search(){
$con=connection();
$width=$_REQUEST['plan_width'];
$height=$_REQUEST['plan_height'];
//echo $_REQUEST['plan_height'].$_REQUEST['plan_height'];
$result=mysqli_query($con,"SELECT * FROM plan WHERE plan_height='".$height."' and plan_width='".$width."'");

$output=array();
while($row=mysqli_fetch_array($result)){

$record=array();
$record['plan_id']=$row['plan_id'];
$record['plan_title']=$row['plan_title'];
$record['plan_code']=$row['plan_code'];
$record['plan_price']=$row['plan_price'];
$record['plan_substruction']=$row['plan_substruction'];
$record['plan_height']=$row['plan_height'];
$record['plan_width']=$row['plan_width'];

$output[]=$record;
}
echo json_encode($output);
}

0 0
کدهای php که Json تولید می کنه را کپی کنید ، فایل فوق را حذف کنید ، مستقیما (بدون استفاده از note pad ,....)در داخل مدیریت فایل سرور یک فایل به همان نام قبلی ایجاد کنید و کدهایی که کپی کردید را در آن paste کنید (7 سال پیش)
0 0
دوست عزیز کاری که گفتین رو انجام دادم ولی مشکل همچنان باقیست اگر نیازی به قسمت هایی از کد هست بگید درج کنم بابت پاسخ سپاس گذارم (7 سال پیش)
0 0
مشکل از سمت فایل php یه کاراکتر اضافی داری که چیسونت را خراب می کنه فایل php را اجرا کن ببن خطایی نداشته باشی (7 سال پیش)
0 0
دوست عزیز سمت سرور رو تست گرفتم جالبه وقتی به جای استفاده از $_REQUEST مقدار پیش فرض داخل متغیر ها قرار میدم و خط هایی که $_REQUSET دارند رو کامنت میکنم خروجی جیسون خالصه که این نشون میده از سمت کلاینت یکسری متن های اضافی ارسال میشه (7 سال پیش)
0 0
توی برنامت ببین اسم ستونی را اشتباه نگذاشتی (7 سال پیش)
0 0
نه عزیز اینقدر پیش پا افتاده به نظر نمیرسه چون از هر قسمت دیگش تست گرفتم (7 سال پیش)
0 0
ببین توی لاگ عبارت no value for داری؟ (7 سال پیش)
0 0
نه دوست عزیز مشکل حل شد پایین به عنوان پاسخ درج کردم (7 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
fandroid  7 سال پیش
0 0

دوستان اینم از LogCat :

طبق اخرین تست های انجام شده متوجه شدم که از سمت اندروید این تگ ها ارسال می شود و حالا این ارسال تگ ها برای چی هست ؟ ایا به علت منسوخ شدن Httpclientو HttpPost و یا UrlEncodedFromEntity هست؟  

0 0
مشکل شما به خاطر خالص نبودن JSON هست و همونطور که میبینید در خطا ها گفته تگ وجود داره . (7 سال پیش)
0 0
مشکلش رو برطرف کردم یک اشتباه خیلی بدی کرده بودم حالا پاسخ کاملش رو در یک پست دیگه میذارم که اگر کسی با این مشکل مواجه شد بتونه حلش کنه (7 سال پیش)
پاسخ به سوال 
fandroid  7 سال پیش
0 0

دوستان از کتابخانه Volley  برای تست دپریکیت شدن Httclient نیز استفاده کردم ولی باز هم همون جواب رو بر میگردونه

دیگه کلافه شدم یکی کمک کنه :/

پاسخ به سوال 
fandroid  7 سال پیش
0 0

اگر با همچنین مشکلی برخوردید ابتدا کل اطلاعاتی که از سمت سرور دریافت میکنید رو در لاگ چاپ کنید سپس لاگ رو داخل یک نت پد کپی کنید(فقط همان بخشی که می خواهید از سمت سرور دریافت کنید به همراه تگ ها ) سپس نت پد رو با پسوند Html ذخیره کنید تا بتوانید خطای ناشی از سمت سرور رو ببینید

مشاهده میکنید که جیسون خالص است و فقط این تگ های عجیب همان خطاهایی است که از سمت سرور برای ما ارسال شده است

من در این لاگ خطای Undifined index مشاهده کردم احتمالا شما هم با همین خطا مواجه میشید که میتواند ناشی از :

1.اشتباه در تعریف ایندکس ها(به کلیدی  که به عنوان پارامتر از سمت اندروید میفرستید و همچنین دریافت آن سمت سرور توجه کنید)

2.قرار دادن دستور الحاق پارامتر به Method (همان setEntity) بعد از دستور اجرای آن باشد (اشتباه خیلی بد :/ )

3.استفاده از توابعی چون setHeader برای Method(در استفاده از این توابع باید حواسمان رو جمع کنیم).


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .