Ошибка отправки заголовков в Rest API - PullRequest
0 голосов
/ 13 ноября 2018

Мне нужно написать в API, и, похоже, ничего не работает.Когда я использую apitester.com , это работает, хотя.Когда я использую свое приложение, это не так.Я вывожу заголовки и полезную нагрузку, и они выглядят одинаково между ними, поэтому я предполагаю, что я делаю что-то не так.Вот мой PHP для отправки данных в API

<?php
    $email = $_POST['email'];
    $expired = NULL;
    $funded = TRUE;

    $data = array(
        "email" => $email,
        "expired" => $expired,
        "funded" => $funded
    );

    $url = 'https://my.rest.api';

    $json_string = json_encode($data);

    $headers = array (
        "Content-Type: application/json",
        "Authorization: Bearer xxx"    
    );

    $channel = curl_init($url);
    curl_setopt($channel, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($channel, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($channel, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($channel, CURLOPT_POSTFIELDS, $json_string);
    curl_setopt($channel, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($channel, CURLOPT_CONNECTTIMEOUT, 10);
    $statusCode = curl_getInfo($channel, CURLINFO_HTTP_CODE);
    curl_exec($channel);   

    http_response_code($statusCode);
    if ( $statusCode != 200 ){
       echo "Data submitted was ".$json_string." Returned status code: {$statusCode} \n".curl_error($channel);
    } else {
       echo $response;
    }
    //I turn the below 2 lines on and off to see what I am actually sending
    // print_r($headers);
    // echo $json_string;

    curl_close($channel);
?>

Я получаю возвращенный код состояния «0» в моем приложении, но «200» с помощью тестера.Что-то явно не так с опциями curl, которые я отправляю?

1 Ответ

0 голосов
/ 13 ноября 2018

Если вы получили статус 0, это означает, что HTTP-запрос не был выполнен вообще.Вы можете использовать следующие функции, чтобы выяснить, какая ошибка произошла:

Sidesnotes:

  • Вы повторяете $response, но эта переменная не существует.
  • Использование CURLOPT_SSL_VERIFYPEER - действительно плохая идея.Убедитесь, что вы удалили его перед началом производства.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...