Php 施乐网络计费(JBA)C70发送计费用户

Php 施乐网络计费(JBA)C70发送计费用户,php,printers,Php,Printers,我正在尝试向Xerox发送一份用户列表,用于网络计费 我用2个Xerox型号(Xerox Workcenter 7556和Xerox Workcenter 7830)成功地做到了这一点,以下是PHP中的sudo代码: function SendUsersToXerox($ip,$users) { $url="{$ip}/acct/set_auth"; $auth='account:jbaserve'; $post="+aaav1.0\n+purge\n"; fo

我正在尝试向Xerox发送一份用户列表,用于网络计费

我用2个Xerox型号(Xerox Workcenter 7556和Xerox Workcenter 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;
}
设备上已启用网络记帐,我可以在URL acct/get_acct从打印机收集所有作业

如果传入错误的post数据,则会收到不同的错误消息:

HTTP Return 400
The Request had invalid syntax
我在任何地方都找不到对JBA或网络计费的任何引用,也不确定如何确定set_auth上的格式是否已更改,或者是否需要设置版本差异

我知道get_acct输出中存在差异,这确实指向不同版本的会计。

答案非常简单。 除以下情况外,一切正常:

$post="+aaav1.0+\n+purge\n";
v1.0之后的加号(+)允许上传用户进行计费

$post="+aaav1.0+\n+purge\n";