我正在尝试将用户列表发送到Xerox以进行网络会计。
我使用2个Xerox模型(XEROX WorkCentre 7556和XEROX WorkCentre 7830)成功完成此操作,遵循PHP中的sudo代码:
function SendUsersToXerox($ip,$users)
{
$url="{$ip}/acct/set_auth";
$auth='account:jbaserve';
$post="+aaav1.0\n+purge\n";
foreach ($users as $u)
{
$post.="+u\"{$u->login}\"\"{$u->code}\"\n";
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'EQ Device Control Engine');
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_USERPWD, "$auth");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/xrx-acct-data']);
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// echo "HTTP CODE: {$httpcode}<br/>";
// echo $data;
}
此代码完全适用于上面提到的Xerox,但在C70上失败,出现401错误,并显示以下消息:
Invalid accounting authentication version
设备上已启用网络记帐,我可以通过URL acct / get_acct
从打印机收集所有作业如果我传入错误的帖子数据,我会收到不同的错误消息:
HTTP Return 400
The Request had invalid syntax
我无法在任何地方找到任何对JBA或网络会计的引用,并且不确定如何查看set_auth上的格式是否已更改,或者是否需要设置其版本差异。
我知道get_acct输出中存在差异,它确实指向不同版本的会计。
答案 0 :(得分:1)
答案很简单。 一切都是正确的,除了以下内容:
$post="+aaav1.0+\n+purge\n";
v1.0之后的加号(+)允许用户上传以进行记帐。