php - ভলি পোস্টের স্ট্রিংয়ের অনুরোধ অপ্রত্যাশিত ত্রুটি 500 500




android android-studio (8)

আমি আমার প্রকল্পে ভলির গ্রন্থাগারটি ব্যবহার করছি এবং Unexpected response code 500 হিসাবে Unexpected response code 500 পাচ্ছি।

আমি স্ট্যাকওভারফ্লো পুঙ্খানুপুঙ্খভাবে অনুসন্ধান করেছি এবং এখনও কার্যকর সমাধান খুঁজে পেতে অক্ষম।

জিইটি স্ট্রিংয়ের অনুরোধ করার জন্য আমার কোডটি নীচে দেওয়া হয়েছে

        val API = "http://squadtechsolution.com/android/v1/allcompany.php"
        val requestQueue = Volley.newRequestQueue(mActivity)
        val stringRequest = StringRequest(
            Request.Method.GET,
            API,
            Response.Listener { response ->
                Log.i("dxdiag", response)
                mView.onFetchHttpDataResult(true)
                Toast.makeText(context, response, Toast.LENGTH_LONG).show()
            },
            Response.ErrorListener { error ->
                Toast.makeText(context, error.toString(), Toast.LENGTH_LONG).show()
                Log.i("dxdiag", error.printStackTrace().toString())
                mView.onFetchHttpDataResult(false)
            })
        requestQueue.add(stringRequest)

নীচে স্ট্যাকট্রেস দেওয়া হয়

2019-09-03 17:15:53.237 3308-3892/com.squadtechs.markhor.foodapp 
E/Volley: [194] BasicNetwork.performRequest: Unexpected response code 
500 for 
http://squadtechsolution.com/android/v1/allcompany.php
2019-09-03 17:15:53.243 3308-3351/com.squadtechs.markhor.foodapp 
D/EGL_emulation: eglMakeCurrent: 0xa7d84180: ver 2 0 (tinfo 
0xa7d832b0)
2019-09-03 17:15:53.256 3308-3308/com.squadtechs.markhor.foodapp 
W/System.err: com.android.volley.ServerError
2019-09-03 17:15:53.257 3308-3308/com.squadtechs.markhor.foodapp 
W/System.err:     at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:205)2019-09-03 17:15:53.257 3308-3308/com.squadtechs.markhor.foodapp W/System.err:     at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:131)2019-09-03 17:15:53.257 3308-3308/com.squadtechs.markhor.foodapp W/System.err:     at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:111)2019-09-03 17:15:53.257 3308-3308/com.squadtechs.markhor.foodapp W/System.err:     at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:90)

নিম্নলিখিত পিএইচপি কোড যা আমি সার্ভারের পাশে লিখেছি:

<?php
    require 'db.php';

    $sql = "SELECT * FROM `company_profile`";
    $result = $con->query($sql);

    if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {

        $id=$row['id']; 

        $company_name=$row['company_name'];
        $cuisine=$row['cuisine'];
        $conpany_phone=$row['conpany_phone'];
        $company_description=$row['company_description']; 
        $company_logo=$row['company_logo'];
        $company_type=$row['company_type'];
        $delivery_type=$row['delivery_type'];
        $delivery_range=$row['delivery_range']; 
        $delivery_fee=$row['delivery_fee'];
        $delivery_pickupinfo=$row['delivery_pickupinfo'];
        $address=$row['address'];

        $companyData[] = array('id'=> $id,'company_name'=> 
        $company_name,'cuisine'=> $cuisine,'conpany_phone'=> 
        $conpany_phone,'company_description'=> 
        $company_description,'company_logo'=> $company_logo,'company_type'=> 
        $company_type,'delivery_type'=> $delivery_type,'delivery_range'=> 
        $delivery_range,'delivery_fee'=> 
        $delivery_fee,'delivery_pickupinfo'=> $delivery_pickupinfo,'address'=> $address);   
    }
    echo $jsonformat=json_encode($companyData);
    } else {
        echo "0 results";
    }
    $conn->close();
?>

@ মুহাম্মদ ফয়জান আপনার সন্দেহগুলি উপেক্ষা করুন, বিষয়টি একটি 500 টি সার্ভার ত্রুটি

এটি কারণ

  • পোষ্টম্যান এবং ভোলি এক নয়
  • ক) আপনার পিএইচপি কোড or বিতে একটি বাগ রয়েছে) এমন পরিবেশের সেটিংস রয়েছে যা এটি প্রকাশ করে

একটি পিএইচপি সমস্যা ডায়াগনোস করতে

এবং আপনাকে পিএইচপি তে আপনার error_log খুলতে হবে। আপনার সার্ভারের উপর নির্ভর করে এটি অন্যভাবে কীভাবে php.ini কে ত্রুটি_লগে পরিবর্তন করতে হয় এটি ব্যাখ্যা করার জন্য এটি জটিল হয়ে উঠতে পারে এটি সার্ভারটিতে চেষ্টা করুন

( ইচ্ছাকৃতভাবে এখান থেকে তোলা )

/*This always works for me:*/

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

/*However, this doesn't make PHP to show parse errors - the only way to show those errors is to modify your php.ini with this line:*/

display_errors = on
/*(if you don't have access to php.ini, then putting this line in .htaccess might work too):*/

php_flag display_errors 1

সার্ভারে একটি পরিবেশের বিষয়টি নির্ধারণ করতে

যদি error_log কিছু না দেয় তবে access_log চেষ্টা করুন। কেন? কারণ এটি সম্ভবত দেখিয়ে দেবে যে কোনও ভিন্ন ধরণের অনুরোধ এসেছে and এবং পোস্টম্যান এবং ভোলি এক নয়

আপনার access_log খুব বেশি সম্ভাব্যভাবে দেখতে হবে এবং পোস্টম্যান ক্লিক করার সাথে সাথে ভলির ক্লায়েন্টটি ক্লিক করার সাথে রিয়েল টাইমে এটি দেখতে হবে

তথ্য: (কেন আমরা এতটা নিশ্চিত হতে পারি)

আমার অন্ত্রে বলেছেন যে আপনার একটি ভুলভাবে কনফিগার করা সার্ভারে একটি সমস্যা আছে। এটি বিশ্বাস করুন বা অ্যাক্সেস_লগ যদি না হয় তবে আপনাকে সবচেয়ে বেশি সহায়তা করবে।

নির্বিশেষে: আপনি পোষ্টম্যানের মধ্যে কী রাখছেন এবং আপনার ভলির ক্লায়েন্ট কী পাঠাচ্ছে - এর মধ্যে স্পষ্টতই একটি সমস্যা রয়েছে this

আমি যে জিনিসগুলি দেখেছি তার মধ্যে অন্তর্ভুক্ত রয়েছে:

  • এটি একটি SAME ORIGIN ত্রুটি হতে পারে।
  • এটি কোনও আন্তর্জাতিক INTERNAL SERVER REDIRECT সমস্যা হতে পারে।
  • এটি $ _GET- কে $ _POST- র এক অপ্রচলিত ফরওয়ার্ডিং হতে পারে (আমি এই সমস্যাটি এনজিনেক্সে দেখেছি)
  • এটি কোনও খারাপ পথের সমস্যা হতে পারে যা no-redirect এবং নিরাপত্তার অভাবে জড়িয়ে পড়েছে।

তবে আমাদের প্ল্যাটফর্ম বা সার্ভার (উইন্ডোজ? লিনাক্স? এনগিনেক্স? পিএইচপি-এফপিএম? অ্যাপাচি? ইত্যাদি) না বলে আমরা সেগুলির জন্য আপনাকে সহায়তা করতে পারি না


আপনার db.php ফাইলটি পরীক্ষা করে দেখুন এবং তারপরে সংযোগের ফিরে db.php দেখুন।

আমি দেখতে পাচ্ছি যে এটি ডাবল এন এর সাথে একটি এন নয় $conn->close() সাথে $conn->close() হওয়া উচিত


আপনার সমস্যা সম্ভবত কন্টেন্টটাইপ থেকে

আপনি এটি যোগ করুন:

@Override
            public String getBodyContentType() {
                return "application/x-www-form-urlencoded";
            }

অথবা

return "application/json"

সমস্যাটি সমাধান না হলে আপনাকে JsonObjectRequest ব্যবহার করতে হবে


আপনার সার্ভার-সাইড কোড থেকে নীচের লাইনটি সরিয়ে পরীক্ষা করুন

echo $jsonformat=json_encode($companyData);

এবং একই পোস্টম্যানের উপরও কাজ করছে না


আমার কিছু আছে প্রথমে গ্রেডল নির্ভরতা (গ্রন্থাগার) এর ভিতরে ওখিটপি আমদানি করুন। এখানে ডকুমেন্টেশন আছে

https://square.github.io/okhttp/

পোস্টম্যানটি ওপেন করার পরে কোড মেনুতে ক্লিক করুন

আপনি সেন্ড বাটনের নীচে দেখতে পাবেন কোড বোতামটি আছে। এটি ক্লিক করুন এবং জাভা-> okhttp নির্বাচন করুন

কোডটি অনুলিপি করুন এবং এন্ড্রয়েড স্টুডিওতে এটি আটকান। এটি কাজ করবে এটির 99.9% সুযোগ রয়েছে।


আমি অন্য উত্তর পোস্ট করছি যদি এটি এখনও সমাধান না হয়। পোস্টম্যানে কপির মত সব শিরোনাম

.addHeader("content-type", "application/json")
.addHeader("cache-control", "no-cache")
.addHeader("postman-token", "fa72f792-c9d3-7891-a544-f37f634f6ee1")

এবং ভোলি প্যারামে এটি রাখুন


এই ত্রুটি "500" এর অর্থ সার্ভারসাইড ত্রুটি। এই ক্ষেত্রে এই ত্রুটিগুলি ঘটে:

  1. প্যারামিটার বা URL গুলিতে ভুল বানান হতে পারে
  2. প্যারামিটারের অভাব।
  3. অথবা আপনি এমন কিছু পাঠাচ্ছেন যা সার্ভার দ্বারা স্বীকৃত নয়।
  4. এছাড়াও ইউআরএলগুলিতে "http: /" বা "https: /" পরীক্ষা করুন।

এই শর্তগুলি পরীক্ষা করে দেখুন I আমিও একই সমস্যার মুখোমুখি হয়েছি। আশা করি এটি আপনাকে সহায়তা করতে পারে।


এইচটিটিপি স্থিতি কোড 500 internal server error প্রতিনিধিত্ব করে, পরিষ্কারভাবে বলেছে যে ক্লায়েন্ট-সাইডে আপনার কোনও সমস্যা নেই (এখানে আপনার ক্ষেত্রে Volly ) তবে সমস্যাটি সার্ভার-সাইডে রয়েছে। আপনার সার্ভার-সাইড পিএইচপি কোডটি ডিবাগ করার চেষ্টা করুন। কোডটি সঠিকভাবে কার্যকর হচ্ছে না এবং তাই এটি এইচটিপিপি প্রতিক্রিয়া শিরোনামে 500 internal server error ফিরিয়ে দিচ্ছে। Volly কেবল ত্রুটি হিসাবে প্রাপ্ত Volly ছুঁড়ে ফেলেছে।

আপনি যদি ব্যাকএন্ড ডেভ হন তবে মোবাইল অ্যাপ্লিকেশনটির সাথে ইন্টিগ্রেশন করার আগে আপনার প্রথমে এটি REST Clients সাথে চেষ্টা করা উচিত। আপনি Here থেকে এটি পেতে পারেন। আপনার এপিআই ভাল পরীক্ষা করা উচিত এবং এটি একটি কার্যক্ষম অবস্থায় থাকা উচিত অন্যথায় আপনি সমস্ত সময় ত্রুটি পাবেন receive





android-volley