Wp_remote_post () এর মাধ্যমে JSON স্ট্রিং প্রেরণ করা হচ্ছে


13

আমি একটি মেলচিম্প ইন্টিগ্রেশন তৈরি করছি এবং তাদের জেএসএন কোড সহ একটি পোস্ট কল প্রয়োজন।

না, আমি এই কোডটি ব্যবহার করছি যা আসলে কাজ করে :

$data = wp_remote_post($url, array(
    'headers'   => array('Content-Type' => 'application/json; charset=utf-8'),
    'body'      => json_encode($array_with_parameters),
    'method'    => 'POST'
));

কিন্তু, এটি পিএইচপি সতর্কতা ফেরত দেয়

সতর্কতা: http_build_query (): প্যারামিটার 1 অ্যারে বা অবজেক্ট হবে বলে আশা করা হচ্ছে। 507 লাইনে ../wp- অন্তর্ভুক্ত / অনুসন্ধান / ট্রান্সপোর্ট /cURL.php এ ভুল মান দেওয়া হয়েছে

কীভাবে এড়ানো যায়?

আমি কেবল 'বডি' সূচীতে প্লেইন অ্যারে ব্যবহার করার চেষ্টা করেছি কিন্তু মেলচিম্প একটি JSON পার্সিং ত্রুটি প্রদান করে।


1
আপনি কি এই প্যাচটি কোরটিতে প্রয়োগ করেছেন? core.trac.wordpress.org/ticket/37700
অটো

মজাদার. একটি বাণিজ্যিক প্লাগইন, তবে যে কোনও ডাব্লুপি ইনস্টলেশনতে অবশ্যই কাজ করা উচিত। তবে যেহেতু ডাব্লুপি বাগ হিসাবে মনে হচ্ছে, আমার পক্ষে ঠিক আছে। অনেক ধন্যবাদ!
কোডার

উত্তর:


16

data_formatআপনার অনুরোধে প্যারামিটারটি সেট করার চেষ্টা করুন :

$data = wp_remote_post($url, array(
    'headers'     => array('Content-Type' => 'application/json; charset=utf-8'),
    'body'        => json_encode($array_with_parameters),
    'method'      => 'POST',
    'data_format' => 'body',
));

দেখে মনে হচ্ছে যে ফর্ম্যাটটি ডিফল্ট হতে পারে query, সেই ক্ষেত্রে ওয়ার্ডপ্রেস ডেটা ব্যবহার করে ফর্ম্যাট করার চেষ্টা করে http_build_queryযা আপনাকে ইতিমধ্যে দেহটিকে স্ট্রিং হিসাবে ফর্ম্যাট করার কারণে সমস্যাগুলি সরবরাহ করে। এখানে প্রাসঙ্গিক চেক ইন wp-includes/class-http.php:

if (!empty($data)) {
    $data_format = $options['data_format'];

    if ($data_format === 'query') {
        $url = self::format_get($url, $data);
        $data = '';
    }
    elseif (!is_string($data)) {
        $data = http_build_query($data, null, '&');
    }
}

যেহেতু আপনার ত্রুটি 507 এর লাইন থেকে আসছে wp-includes/Requests/Transport/cURL.php, আমরা দেখতে পাচ্ছি যে এটির মূল কলটি http_build_query:

protected static function format_get($url, $data) {
    if (!empty($data)) {
        $url_parts = parse_url($url);
        if (empty($url_parts['query'])) {
            $query = $url_parts['query'] = '';
        }
        else {
            $query = $url_parts['query'];
        }

        $query .= '&' . http_build_query($data, null, '&');
        $query = trim($query, '&');

        if (empty($url_parts['query'])) {
            $url .= '?' . $query;
        }
        else {
            $url = str_replace($url_parts['query'], $query, $url);
        }
    }
    return $url;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.