我只是在努力让这段代码工作时写信给你。我可以根据需要从命令行调用 api。在将它转换为 PHP 可读的 curl 后,我尝试从 php 函数调用它,它似乎发送但我只是得到一个空数组作为响应。它非常混乱,因为我之前从 api 收到有效的错误消息作为响应。我将列出 php 和 html 表单的代码。
<?php
$name = $_POST['testName'];
$email = $_POST['testEmail'];
$file = $_FILES['testFile'];
$url = $_POST['testURL'];
runSend($file, $name, $email);
function runSend($file, $name, $email){
echo "Success, message sent";
echo $file;
echo $name;
echo $email;
echo $url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.boldsign.com/v1/document/send');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$post = array(
'Title' => 'Commercial Agreement',
'Message' => 'Terms, purpose and duration of agreement ',
'UseTextTags' => 'true',
'EnableSigningOrder' => 'false',
'Signers[0][Name]' => 'Example Name',
'Signers[0][EmailAddress]' => '[email protected]',
'Signers[0][SignerOrder]' => '0',
'Signers[0][FormFields][0][FieldType]' => 'Signature',
'Signers[0][FormFields][0][Name]' => 'sign_field',
'Signers[0][FormFields][0][PageNumber]' => '1',
'Signers[0][FormFields][0][Bounds][X]' => '50',
'Signers[0][FormFields][0][Bounds][Y]' => '50',
'Signers[0][FormFields][0][Bounds][Width]' => '200',
'Signers[0][FormFields][0][Bounds][Height]' => '30',
'Signers[0][FormFields][0][IsRequired]' => 'true',
'Files' => new CURLFILE($file)
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$headers = array();
$headers[] = 'X-Api-Key: EXAM76242$PLEA32PIK555EY';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
<form action="/wp-content/themes/hello-theme-child-master/send-test-file.php" method="post" enctype="multipart/form-data">
name:
<input type="text" id="testName" name="testName" value="[7401]"><br>
email
<input type="text" id="testEmail" name="testEmail" value="testEmail"><br>
Select pdf to upload:
<input type="file" name="testFile" id="testFile">
<input type="text" id="testURL" name="testURL" value="[e2pdf-download id="31" output='url']"><br>
<input type="submit" value="Send File" name="submit">
</form>
我曾多次尝试重构代码,但坦率地说,我很难过。
根据提供的代码,您从 API 获得空响应数组的可能原因有多种。以下是一些需要检查的事项和可能的解决方案:
runSend($file, $name, $email, $url);
然后更新函数定义:
function runSend($file, $name, $email, $url){ ... }
'Files' => new CURLFILE($file['tmp_name'])
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
echo $result;
这样,您可以查看 API 是否返回任何错误消息,或者问题是否出在客户端。
if ($_FILES['testFile']['error'] !== UPLOAD_ERR_OK) {
die("File upload failed with error code " . $_FILES['testFile']['error']);
}
这将帮助您确定文件上传过程本身的任何问题。
如果 API 需要 JSON 负载,您可以更改 $post 数组并使用 json_encode 将其转换为 JSON 字符串。然后,将 Content-Type 标头设置为 application/json。
这是一个如何做到这一点的例子:
$post = array(
// Your parameters here
);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'X-Api-Key: EXAM76242$PLEA32PIK555EY'));
实施这些更改后,您应该对问题的原因有更好的了解。请记住检查 API 文档以了解任何特定要求,并确保您的实施符合这些要求。如果您仍有问题,请考虑检查 API 日志或联系 API 支持以获得进一步帮助。
由于您使用的是 wordpress,因此激活调试模式以查看日志文件中是否出现错误也是一个好主意。
希望这有用。