Альтернатива функции file_get_contents в WordPress - PullRequest
0 голосов
/ 06 января 2020

Я должен отправить запрос на API с wordpress, свяжитесь с нами. Я написал следующий код в PHP и протестировал его. Работало нормально. Но когда я добавляю этот код в функцию в wordpress, я начинаю понимать, что file_get_contents не работает. Я пробовал другую wordpress функцию, такую ​​как wp_remote_post et c. Тогда вызов API не будет выполнен. Пожалуйста, помогите мне отправить хороший запрос, чтобы я мог опубликовать данные.

function send_api_request(){
    $postData = array(
      "AccessKey"   => "xxxxxxxxxx",
      "Subject"     => "sample subject 1",
      "Name"        => "sample name",
      "Message"     => "sample message",
      "Phone"       => "0000000000",
      "Email"       => "xxxxxx@gmail.com",
      "Company"     => "sample company",
      "SourceFrom"  => 1
    );

    // Create the context for the request
    $context = stream_context_create(array(
        'http' => array(
            'method'    => 'POST',
            'header'    =>  "Content-Type: application/json\r\n",
            'content'   => json_encode($postData)
        )
    ));

    // Send the request
    $response = file_get_contents('http://someURL.com/api/lead', FALSE, $context);

    // Check for errors
    if($response === FALSE){
        die('Error');
    }
    return $response;
}

Код, который я пробовал с wordpress, выглядит следующим образом.

function send_api_request($name,$email,$phone,$company,$message,$source){

    $postData = array(
                  "AccessKey"   => "xxxxx",
                  "Subject"     => "",
                  "Name"        => $name,
                  "Message"     => $message,
                  "Phone"       => $phone,
                  "Email"       => $email,
                  "Company"     => $company,
                  "SourceFrom"  => $source
                );
    // Create the context for the request
    $context = (array(
        'http' => array(
            'method'    => 'POST',
            'header'    =>  "Content-Type: application/json",
            'content'   => json_encode($postData)
        )
    ));
    // Send the request
    $response   = "";
    $response   = wp_remote_post("http://someURL.com/api/lead", $context);
}

Ответы [ 2 ]

1 голос
/ 06 января 2020

Попробуйте этот код

function send_api_request($name,$email,$phone,$company,$message,$source){

    $postData = array(
                  "AccessKey"   => "xxxxx",
                  "Subject"     => "",
                  "Name"        => $name,
                  "Message"     => $message,
                  "Phone"       => $phone,
                  "Email"       => $email,
                  "Company"     => $company,
                  "SourceFrom"  => $source
                );


    // Send the request
    $response   = "";
    $response   = wp_remote_post("http://someURL.com/api/lead", array(
    'method' => 'POST',
    'timeout' => 45,
    'redirection' => 5,
    'httpversion' => '1.0',
    'blocking' => true,
    'headers' => array("Content-Type" => "application/json"),
    'body' => json_encode($postData),
    'cookies' => array()
    ));
}
0 голосов
/ 06 января 2020

Вы можете использовать функцию wp_remote_get вместо file_get_content. Пожалуйста, прочитайте детали здесь , прежде чем использовать его.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...