رفتن به مطلب
جامعه‌ی برنامه‌نویسان مُدرن ایران
kamran_14

فرق متد GET و POST در ارسال اطلاعات به سمت سرور


پست های پیشنهاد شده

سلام خسته نباشید

این متد برای ثبت اطلاعات در سرور هست. مشکلی در این کد نیست. فقط چرا نمیشه با متد GET اطلاعات رو فرستاد؟ مگه متد GET برای ارسال اطلاعات نیست؟ من GET وقتی مینویسم عمل نمیکنه

 private void sendInfo(final String email, final String username, final String password, final String mobile)
    {
        String Url="http://192.168.43.3/shop/register.php";
        StringRequest stringRequest=new StringRequest ( Request.Method.POST, Url, new Response.Listener<String> () {
            @Override
            public void onResponse(String response) {
                Log.i ( TAG, "onResponse: " );

                try {
                    JSONObject jsonObject=new JSONObject ( response );
                    String resualt=jsonObject.getString ( "response" );
                    if (resualt.matches ( "ok" ))
                        Toast.makeText ( getContext (), "Successfully is Registred", Toast.LENGTH_SHORT ).show ();
                    else
                        Toast.makeText ( getContext (),"Faild",Toast.LENGTH_LONG ).show ();
                } catch (JSONException e) {
                    e.printStackTrace ();
                }
            }
        }, new Response.ErrorListener () {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText ( getContext (), error+"", Toast.LENGTH_SHORT ).show ();
            }
        } ){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String,String> params=new HashMap<> (  );
                params.put ( "email",email );
                params.put ( "username",username );
                params.put ( "password",password );
                params.put ( "mobile",mobile );
                return params;
            }
        };
        stringRequest.setRetryPolicy (new DefaultRetryPolicy (10000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT) );
        Volley.newRequestQueue ( getContext () ).add ( stringRequest );
    }

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 58 دقیقه قبل، kamran_14 گفته است :

سلام خسته نباشید

این متد برای ثبت اطلاعات در سرور هست. مشکلی در این کد نیست. فقط چرا نمیشه با متد GET اطلاعات رو فرستاد؟ مگه متد GET برای ارسال اطلاعات نیست؟ من GET وقتی مینویسم عمل نمیکنه


 private void sendInfo(final String email, final String username, final String password, final String mobile)
    {
        String Url="http://192.168.43.3/shop/register.php";
        StringRequest stringRequest=new StringRequest ( Request.Method.POST, Url, new Response.Listener<String> () {
            @Override
            public void onResponse(String response) {
                Log.i ( TAG, "onResponse: " );

                try {
                    JSONObject jsonObject=new JSONObject ( response );
                    String resualt=jsonObject.getString ( "response" );
                    if (resualt.matches ( "ok" ))
                        Toast.makeText ( getContext (), "Successfully is Registred", Toast.LENGTH_SHORT ).show ();
                    else
                        Toast.makeText ( getContext (),"Faild",Toast.LENGTH_LONG ).show ();
                } catch (JSONException e) {
                    e.printStackTrace ();
                }
            }
        }, new Response.ErrorListener () {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText ( getContext (), error+"", Toast.LENGTH_SHORT ).show ();
            }
        } ){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String,String> params=new HashMap<> (  );
                params.put ( "email",email );
                params.put ( "username",username );
                params.put ( "password",password );
                params.put ( "mobile",mobile );
                return params;
            }
        };
        stringRequest.setRetryPolicy (new DefaultRetryPolicy (10000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT) );
        Volley.newRequestQueue ( getContext () ).add ( stringRequest );
    }

 

سلام،

متد Get متدی برای درخواست اطلاعات هست نه ارسال! هرچند برای ارسال هم استفاده می‌شه اما اگر شما می‌خواهید اطلاعاتی مثل همین کدی که می‌بینم رو در قالب کوئری نه url ارسال کنید بهتره متد رو به Post تغییر بدین.

خیلی ساده بخوام توضیح بدم هرجا که قرار بود مقادیری رو به عنوان کوئری به سمت سرور ارسال کنید حتماً از Post استفاده کنید. در این صورت لازم نیست پارامتر‌ها رو در قالب url ارسال کنید.

مثالی هم که زدین متد Post هست، اگر دقت کنید نوع params داره چند تا نوع با مقدار رو ارسال می‌کنه.

سمت سرور هم مثلاً با Php با در نظر گرفتن نوع درخواست از Post به این شکل می‌تونید مقدار رو بگیرید.

$email = $_POST["email"];
$username = $_POST["username"];
$password = $_POST["password"];
$mobile = $_POST["mobile"];

echo $email;
...
.....
......

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
ارسال شده در (ویرایش شده)

ممنون از جوابتون

ولی من میخواستم بدونم با متد GET چطوری میشه اطلاعاتو ارسال کرد؟ یعنی میتوان همین برنامه رو طوری تغییر داد که به جای post ما از get استفاده کرد؟

ویرایش شده در توسط kamran_14

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در ۱ ساعت قبل، kamran_14 گفته است :

ممنون از جوابتون

ولی من میخواستم بدونم با متد GET چطوری میشه اطلاعاتو ارسال کرد؟ یعنی میتوان همین برنامه رو طوری تغییر داد که به جای post ما از get استفاده کرد؟

چرا گیر دادی به متد Get؟ در این متد زمانی می‌تونید پارامتری رو ارسال کنید که در قالب url باشه.

برای مثال به این شکل:

http://www.domain.com/request.php?username=myname&email=myemail

در این صورت دیگه نمی‌تونید کوئری‌های سفارشیِ خارج از url ارسال کنید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

چون میخواستم تفاوتشون رو عملی ببینم. ولی قبلا گفته شده بود استاندارد get,post در همه ی زبانهان یکسانه ولی در html میشد به سرور اطلاعات فرم رو فرستاد. خودش در آدرس بار نشون میداد و ما  کویری استرینقها رو ما نمینویشتیم

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 1 دقیقه قبل، kamran_14 گفته است :

چون میخواستم تفاوتشون رو عملی ببینم. ولی قبلا گفته شده بود استاندارد get,post در همه ی زبانهان یکسانه ولی در html میشد به سرور اطلاعات فرم رو فرستاد. خودش در آدرس بار نشون میداد و ما  کویری استرینقها رو ما نمینویشتیم

همینطوره خب، منم اشاره کردم مثالش رو که تحت Get باید پارامتر‌ها رو در Url بیاری.

توی اندروید و مثالی که زدی تابع getParams اضافه هست و صرفاً در روش Post به درد می‌خوره.

با توجه به مثال خودت همچین کاری کافی هست :

String Url="http://192.168.43.3/shop/register.php?username=name&email=mymail";

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 17 ساعت قبل، کامبیز اسدزاده گفته است :

توی اندروید و مثالی که زدی تابع getParams اضافه هست و صرفاً در روش Post به درد می‌خوره.

 

البته این متد getParams مربوط به کلاس volly هست که چه برای post چه برای get بایدoverride بشه!

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در ۱ ساعت قبل، فرهاد شیری گفته است :

البته این متد getParams مربوط به کلاس volly هست که چه برای post چه برای get بایدoverride بشه!

آقای شیری خیلی ممنون.

پس میشه از نوشته ی شما فهمید که از سمت اندروید هم میتوان با متد GET به سرور اطلاعات فرستاد یعنی با کمک کلاس والی.

آقای شیری ممنون میشم اگر مثال ساده ای بزنید که بتوان اطلاعات را با متد GET به سرور اطلاعات فرستاد. من در این کد بالا که فرستادم وقتی به جای POST از متد GET استفاده میکنم خطا میدهد. چرا؟ مگر هر دو کار ارسال اطلاعات به سرور را انجام نمیدهند؟ در حالی که در HTML وقتی میخواستیم با GET اطلاعات رو بفرستیم خودمان دستی در نوار آدرس نمینوشتیم. ببخشید که سوالمو دوباره پرسیدم چون از من خواسته شده در مورد GET تحقیق کنم

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از ۷۵ اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...