PHP curl для POST-данных формы в REST API с использованием базовой c авторизации - PullRequest
0 голосов
/ 28 января 2020

Я новичок в PHP, и я разрабатываю простой клиент для одного из моих предметов в колледже. Основная цель этого клиента - сделать CRUD в JAVA API. После небольшого исследования я увидел, что для таких простых клиентов, как этот, люди используют CURL. Я никогда не работал с curl, и я не знаю, делаю ли я что-то не так. Когда я отправляю свою форму, она не выдает никакой ошибки, но когда я открываю почтальон, я вижу, что мои данные не были успешно размещены. Если бы кто-нибудь мог мне помочь, я был бы благодарен!

HTML ФОРМА:

<form class="form" action="createActivity.php">
        <label for="name" class="labelActivityName"><b>Name</b></label>
        <input type="text" id="name" placeholder="Name" name="name">

        <label for="description" class="labelActivityDescription"><b>Description</b></label>
        <textarea id="description" placeholder="Description..." name="description"></textarea>

        <button type="submit"><b>Submit</b></button>
</form>

PHP CURL:

$url = "http://localhost:8080/myapi/actvities";

    $username = 'user';
    $password = 'user123';

    $name = (isset($_POST['name']));
    $description = (isset($_POST['description']));

    $fields = array(
        'name' => $name,
        'description' => $description
    );

    $client = curl_init();
    curl_setopt($client, CURLOPT_URL, $url);
    curl_setopt($client, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($client, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($client, CURLOPT_USERPWD, "$username:$password");
    curl_setopt($client, CURLOPT_POST, 1);
    curl_setopt($client, CURLOPT_POSTFIELDS, $fields);

    $response = curl_exec($client);
    curl_close($client);

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Предлагаю попробовать установить жрет. http://docs.guzzlephp.org/en/stable/quickstart.html

Сделать запрос к вашему API будет просто, как

use GuzzleHttp\Client;

$client = new Client();
$response = $client->post('adsf', [
    'auth' => ['username', 'password'], // basic auth
    // sending data via form request
    'form_params' => [
        'name' => 'Some name',
        'description' => 'Some description'
    ]
]);
var_dump($response->getBody());
var_dump($response->getStatusCode());
0 голосов
/ 28 января 2020

Функция isset () проверяет, установлена ​​ли переменная или нет, и возвращает логическое значение true или false. Вы можете использовать ниже код:

if (! (isset($_POST['name']) && isset($_POST['description']))) {
    http_response_code(422);
    echo 'name and description are required.';
    exit;
}

$name = $_POST['name'];
$description = $_POST['description'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...