Преобразование командной строки cURL в PHP cURL с закодированным URL - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь преобразовать API командной строки в PHP cURL

Вот командная строка php curl

curl --data-urlencode "type=5" --data-urlencode "url=https://example.com/test.torrent" --data-urlencode "comment=API test" --data-urlencode "website=https://example.com/" --data-urlencode "apikey=123456-asdfasdfasdfasdfasdfasdf" --data-urlencode "send=true" https://www.source-site.com/get.php

Это то, что я пытаюсь с PHP

<?php
ini_set('display_errors',1);
$arr=array(
    'type' => 'category5',
    'url' => 'https://example.com/test.torrent',
    'website' => 'https://example.com',
    'apikey' => '696c1a998ac8f13154-088605f-9b0',
    'send' => 'true'
 );
$data_string = http_build_query($arr);
$ch = curl_init('https://www.source-site.com/get.php'); // this url where my file will be uploaded                                                                     
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                                                                                                                                         
curl_exec($ch);
echo curl_error($ch);
?>

Теперь проблема в том, что он не загружает файл и не отображает никаких ошибок, страница пуста, что не так с моими кодами PHP?

Я обновил свои коды, теперь я получаю следующую ошибку

error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none

1 Ответ

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

Я скопировал ваш код и у меня был собственный скрипт, который отображал массив $ _POST. Я curlopt_custom_request до CURLOPT_POST установлен в true и добавил CURLOPT_FOLLOWLOCATION. Я заметил, что ваш URL также имеет https, и если ваш тестовый сайт не имеет сертификата, это может привести к сбою, вы можете попробовать установить для CURLOPT_SSL_VERIFYPEER значение false, но мне не очень повезло с этим. Так что, если это не сработает, возможно, попробуйте http://yoursite.com.

<?php
ini_set('display_errors',1);
$arr=array(
    'type' => 'category5',
    'url' => 'https://example.com/test.torrent',
    'website' => 'https://example.com',
    'apikey' => '696c1a998ac8f13154-088605f-9b0',
    'send' => 'true'
 );
$data_string = http_build_query($arr);
echo $data_string;
$ch = curl_init('YOUR URL HERE'); // this url where my file will be uploaded
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded"));
$final = curl_exec($ch);
var_dump($final);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...