2014-11-09 2 views
0

Мне нужно приложить файл формы в формате pdf и отправить его в API с помощью PHP CURL.Curl POST-приложение

Вот RingCentral FaxOut API Documentation

$url = "https://service.ringcentral.com/faxapi.asp"; 

$data = array(

    'Username' => 'XXXXXXXXX', 
    'Password' => 'XXXXXXXXX', 
    'Recipient' => 'XXXXXXXXXX|Navneet', 
    'Coverpage' => 'Default', 
    'Coverpagetext' => 'Testing Faxout API ', 
    'Resolution' => 'High', 
    "Sendtime" => date('d:m:y H:i:s'), 
    'Attachment' => file_get_contents(PATH_TO_FILE) 

); 

curl_setopt($ch,CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch,CURLOPT_POST, count($data)); 
curl_setopt($ch,CURLOPT_POSTFIELDS, $data); 

$result = curl_exec($ch); 

API ничего не возвращает в ответ. Я думаю, я не отправляю приложение должным образом. Вложение должно быть в двоичном потоке. Я пробовал base64_encode, но не успел.

Как показано в примере запроса тела, заголовок для крепления должно быть, как это

Content-Disposition: form-data; name="Attachment"; filename="C:\example.doc" 
<Document content is here> 
-----------------------------7d54b1fee05aa 
+0

Лучше вы указываете свой код, и вы ошиблись «API не принимает его, не является хорошим объяснением брата» – Milad

+0

Вы используете старый API. Попробуйте новый [RingCentral API] (https://developers.ringcentral.com/) и [PHP SDK] (https://github.com/ringcentral/ringcentral-php), для которого больше поддержки. – Grokify

ответ

0

Вы можете отправить что-нибудь к апи с CURL, $doc в моем примере все, что вы хотите опубликовать, это может быть файл json_encoded, образ base64_encoded или PDF или что-то еще.

$baseUri = https://service.ringcentral.com/faxapi.asp; 

$doc = file_get_contents(PATH_TO_FILE); 

$ci = curl_init(); 
curl_setopt($ci, CURLOPT_URL, $baseUri); 
curl_setopt($ci, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ci, CURLOPT_FORBID_REUSE, 0); 
curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'POST'); 
curl_setopt($ci, CURLOPT_POSTFIELDS, $doc); 

// also you can specify any specific header like this : 

$h1['Content-Disposition'] = 'Content-Disposition'. ': ' . 'form-data'; // headers are key-value pairs right ? 

curl_setopt($ci, CURLOPT_HTTPHEADER, array_values($h1)); // you can use this line for each header as a new key-value pair 

$h2['name'] = 'name'. ': ' . 'Attachment'; 
curl_setopt($ci, CURLOPT_HTTPHEADER, array_values($h2)); 
$h3['filename'] = 'filename'. ': ' . 'C:\example.doc'; 
curl_setopt($ci, CURLOPT_HTTPHEADER, array_values($h3)); 

$response = curl_exec($ci); 

** NOTE **: его хорошая идея, чтобы в первую очередь проверьте, если ваша функция file_get_contents работы: так в другой проверки PHP файла, чтобы увидеть это:

echo file_get_contents(PATH_TO_FILE); 

Смотрите, если он правильно отгоняет

+0

спасибо за помощь, пожалуйста, проверьте выше –

Смежные вопросы