我在使用ConnectWise API将文档上传到现有票证时会遇到错误,我相信问题是我如何执行Curl请求。
我尝试根据我在Google上发现的内容来处理卷曲选项,但似乎没有用。
这是邮政请求
function post_ticket_attachment ( $ticket_id, $file_attachment ) {
$url = "https://api-na.myconnectwise.net/v4_6_release/apis/3.0/system/documents";
$filename = $file_attachment['name'];
$filedata = $file_attachment['tmp_name'];
$filesize = $file_attachment['size'];
$fields = array (
"recordId" => $ticket_id,
"recordType" => "Ticket",
"title" => $file_attachment['name']
);
$filenames = array($filedata);
$files = array();
foreach( $filenames as $f ){
$files[$f] = file_get_contents($f);
}
$ch = curl_init();
$boundary = uniqid();
$delimiter = '-------------' . $boundary;
$post_data = build_data_files($boundary, $fields, $files);
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $post_data,
CURLOPT_HTTPHEADER => array(
"Authorization: basic " . $connect_wise_auth,
"Content-Type: multipart/form-data; boundary=" . $delimiter,
"Content-Length: " . strlen($post_data)
),
));
$response = curl_exec($ch);
console_log ($response);
}
这就是我如何构建帖子数据:
function build_data_files($boundary, $fields, $files){
$data = '';
$eol = "rn";
$delimiter = '-------------' . $boundary;
foreach ($fields as $name => $content) {
$data .= "--" . $delimiter . $eol
. 'Content-Disposition: form-data; name="' . $name . """.$eol.$eol
. $content . $eol;
}
foreach ($files as $name => $content) {
$data .= "--" . $delimiter . $eol
. 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $name . '"' . $eol
. 'Content-Transfer-Encoding: binary'.$eol
;
$data .= $eol;
$data .= $content . $eol;
}
$data .= "--" . $delimiter . "--".$eol;
return $data;
}
我希望请求正确发布,但我从ConnectWise表示:"无法路由。Codebase/Company无效。"
我只是遇到了这个问题,是因为我忘记了将用户名和密码添加到基本授权中。看起来您正在添加它,但是我看不到包含的内容,因此,为了澄清,用户名是公司 publicKey,密码是私钥,而在base64中进行了编码。
从官方文档中(您可能要登录才能看到它(
建议创建API成员,而不是使用绑定的API键 特定成员。授权:基本 BASE64(CompanyId PublicKey:PrivateKey((授权:基本 Y29TCGFUEWLKK3B1MXPY2TLETPWCML2YXRLA2V5(
正确添加信息后,API将能够检查您的用户是否正确并且您属于该公司。
请注意,这是一个非常具体的API的非常具体的问题,因此,如果您将来发现更多问题,您将在他们的论坛上直接询问更多的运气。
对不起,不是一个完整的答案(我还不能评论(试图通过其标识符查找公司时,我遇到了同样的错误。事实证明,我没有使用正确的URI。尝试使用提琴手或其他内容确切检查您要发布的内容,以查看是否有100%正确的东西。
我的问题是我在这里有一个前斜线: company/companies/?conditions
应该是company/companies?conditions
我一开始没有注意到,因为我使用变量来构建URI,所以这不是很清楚。
我还发现,使用此https://github.com/christaylorcodes/connectwisemanageapi很有帮助,因为我可以看到应该如何格式化请求(在我发布时与Fiddler一起观看(。然后,您可以确保您的帖子行为相同。