Как включить 'data-urlencode' с помощью библиотеки php curl - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь подключить twilio api, используя Curl php.Ниже приведен код из Twilio api

Я использовал онлайновый инструмент php для скручивания, но он не конвертировал код с URL-адресом кодирования данных.

Вопрос, помеченный как дубликат, не имеетинформация о --data-urlencode.Я пробовал упомянутое там решение, но все же оно не работает так, как предполагалось.

curl -X POST https://api.twilio.com/2010-04-01/Accounts/ACCOUNTID/Messages.json \
--data-urlencode "From=+122344444" \
--data-urlencode "Body=Body" \
--data-urlencode "To=+13101111111" \
-u ACCOUNTID:PASSWORD

Код PHP:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, 'ACCOUNTID' . ':' . 'PASSWORD');

Ожидаемый результат - получить сообщение, но яЯ получаю

{"code": 21603, "message": "A 'From' phone number is required.", "more_info": "https://www.twilio.com/docs/errors/21603", "status": 400} 

Причина, по которой я это получаю, заключается в том, что я не знаю, как перейти от тела к телу в керлинге php.

1 Ответ

1 голос
/ 04 апреля 2019

То, что вам не хватает, это

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payload));

, где $payload равно

$payload = [
    'From' => '+122344444',
    'To' => '+13101111111',
    'Body'   => 'This is the body...'
];

Код PHP:

$payload = [
    'From' => '+122344444',
    'To' => '+13101111111',
    'Body'   => 'This is the body...'
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, 'ACCOUNTID' . ':' . 'PASSWORD');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payload));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...