PDA

View Full Version : ارسال یوزرنیم و پسورد کاربر به سرور و دریافت تاریخ عضویت و نمایش درTextView



hamidhas1367
جمعه 02 آذر 1397, 13:02 عصر
سلام دوستان
داخل اکتیویتی اصلی یه بخش دارم به اسم showprofile که وقتی انتخاب توسط کاربر انتخاب میشه، میاد یوزنیم و پسورد که داخل شیردپرفرینس ذخیره هست رو می فرسته سمت سرور و قراره تاریخ عضویت کاربر که داخل یک تیبل از دیتابیس سمت سرور ذخیره هست رو بگیره و داخل یه تکست ویو نمایش بده
این ها کدهای php سمت سرور هستش:

function get(){

$connection = connectToDatabase();
$Username = $_REQUEST['Username'];
$Pass = $_REQUEST['Pass'];


if($Username!="" && $Pass!=""){

$result = mysqli_query($connection,"select Date from users where Username='$Username' and Pass='$Pass'");



$row = mysqli_fetch_array($result)

$record = array();
$record['Date'] = $row['Date'];


}

echo json_encode($record);

}else {

print "null";

}
mysqli_close($connection);}

این کدهای php رو نوشتم که بعد از دریافت یوزرنیم و پسورد از سمت اندروید میاد و خونه متناظر اطلاعات رو داخل تیبل یوزرز پیدا می کند و توی خروجی ارسال می کنه.
اگه کدهام اشتباه نوشته شده لطفا راهنمایی کنید اصلاحش کنم.

مورد دیگه ای که کدهای سمت اندروید هست که نتونستم کاملش کنم و کمک میخوام که کاملش کنم

من تا اینجا نوشتم :



private void ShowProfile(){

profile = new MaterialDialog.Builder(MainActivity.this)
.customView(R.layout.alert_aprofile,false)
.show();

AsyncHttpPost post = new AsyncHttpPost(
"http://(myurl)profile.php"
);

post.setTimeout(5000);
MultipartFormDataBody body = new MultipartFormDataBody();
body.addStringPart("Username",sp.getString("Username", null));
body.addStringPart("Pass",sp.getString("Pass", null));
post.setBody(body);
});

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

rubiks.kde
دوشنبه 05 آذر 1397, 11:40 صبح
برای بهتر شدن کارتون پیشنهاد میدم حتما از کتابخونه های اماده ایی مثل retrofit استفاده کنید که در کار با API امکانات خیلی خوبی میدن.

برای کد خودتون هم ادامش تنها لازمه جواب سرور رو به json تبدیل کنید و ازش استفاده کنید.

hamidhas1367
چهارشنبه 07 آذر 1397, 00:01 صبح
تشکر از پاسختون


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

و اگه امکانش هست همین کار، یعنی ارسال یوزنیم و پس به سرور و دریافت خروجی سرور و نمایشش در textview رو با کتابخونه retrofit بنویسید

پیشاپیش ممنونم

rubiks.kde
چهارشنبه 07 آذر 1397, 08:16 صبح
مثال های استفاده از retrofit زیاده و تنها لازمه یه سرچ بزنید ، خودتون یه تلاشی بکنید و نتیجه رو بگید دوستان هم کمک میکنند

hamidhas1367
چهارشنبه 07 آذر 1397, 14:48 عصر
من با این کتابخونه آشنایی ندارم ولی برای ادامه کد خودم اینو نوشتم:


private void ShowProfile(){

profile = new MaterialDialog.Builder(MainActivity.this)
.customView(R.layout.alert_aprofile,false)
.show();

AsyncHttpPost post = new AsyncHttpPost(
"http://*******/profile.php"
);

post.setTimeout(5000);
MultipartFormDataBody body = new MultipartFormDataBody();
body.addStringPart("Username",sp.getString("Username", null));
body.addStringPart("Pass",sp.getString("Pass", null));
post.setBody(body);

AsyncHttpClient.getDefaultInstance().executeString (post, new AsyncHttpClient.StringCallback() {
@Override
public void onCompleted(final Exception e, AsyncHttpResponse source, final String result) {

if(e != null){

}


if(!result.equals("")){




SharedPreferences sp = getApplicationContext().getSharedPreferences("User",0);

SharedPreferences.Editor edit = sp.edit();
edit.putString("Date",result);
profile_time.setText(sp.getString("Date",null));




}



}
});
ولی زمانی که پروفایل رو تاچ می کنم خارج میشه از نرم افزار این هم لاگ دیباگر:


java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequ ence)' on a null object reference
at com.birjandandroid.bazaarpal.MainActivity$5.onComp leted(MainActivity.java:303)
at com.birjandandroid.bazaarpal.MainActivity$5.onComp leted(MainActivity.java:290)
at com.koushikdutta.async.http.AsyncHttpClient.invoke WithAffinity(AsyncHttpClient.java:527)
at com.koushikdutta.async.http.AsyncHttpClient.access $800(AsyncHttpClient.java:51)
at com.koushikdutta.async.http.AsyncHttpClient$7.run( AsyncHttpClient.java:534)
at com.koushikdutta.async.AsyncServer.lockAndRunQueue (AsyncServer.java:740)
at com.koushikdutta.async.AsyncServer.runLoop(AsyncSe rver.java:758)
at com.koushikdutta.async.AsyncServer.run(AsyncServer .java:658)
at com.koushikdutta.async.AsyncServer.access$800(Asyn cServer.java:44)
at com.koushikdutta.async.AsyncServer$14.run(AsyncSer ver.java:600)
E/AndroidRuntime: FATAL EXCEPTION: AsyncServer
Process: com.birjandandroid.bazaarpal, PID: 27805
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequ ence)' on a null object reference
at com.birjandandroid.bazaarpal.MainActivity$5.onComp leted(MainActivity.java:303)
at com.birjandandroid.bazaarpal.MainActivity$5.onComp leted(MainActivity.java:290)
at com.koushikdutta.async.http.AsyncHttpClient.invoke WithAffinity(AsyncHttpClient.java:527)
at com.koushikdutta.async.http.AsyncHttpClient.access $800(AsyncHttpClient.java:51)
at com.koushikdutta.async.http.AsyncHttpClient$7.run( AsyncHttpClient.java:534)
at com.koushikdutta.async.AsyncServer.lockAndRunQueue (AsyncServer.java:740)
at com.koushikdutta.async.AsyncServer.runLoop(AsyncSe rver.java:758)
at com.koushikdutta.async.AsyncServer.run(AsyncServer .java:658)
at com.koushikdutta.async.AsyncServer.access$800(Asyn cServer.java:44)
at com.koushikdutta.async.AsyncServer$14.run(AsyncSer ver.java:600)

hamidhas1367
چهارشنبه 07 آذر 1397, 21:31 عصر
ویرایش :

من این مجموعه کد رو نوشتم :

rubiks.kde
پنج شنبه 08 آذر 1397, 09:20 صبح
طبق خطایی که گذاشتید profile_time تعریف نشده هست.