我已经尝试了所有我能想到的方法,并且无法将换行符与 WHMCS API 的 addticketreply 命令一起使用。它来自窗口的应用程序,而不是 PHP 或任何东西。简单查询字符串,所有字符都包含在第一个换行符之前。在该换行符之后,不包含任何其他消息。
我试过 urlencode 方法,不行,API 只是插入所有文本,包括编码部分哈哈,并没有取消编码。我试过用换行符代替\n
,<br>
但WHMCS仍然只显示<br>
哈哈
任何线索如何通过 API 获取完整消息,包括新行?这个文档真的很缺乏。
此外,变量 adminusername 根本不起作用!我试过全名,不,我试过用户名和用户 ID,不,仍然插入我登录的用户名来回复票证。我使用的用户是具有完全访问权限的超级管理员。
API 的查询字符串如下所示:
accesskey=key&adminusername=Name of Person&ticketid=488&message=asdf asdf
Nothing past that first line goes :(
sad sad sad&action=addticketreply&responsetype=json&username=admin&password=mypassword
我应该提到我正在使用 Indy 作为 Post。其他一切正常,通过的任何其他命令都有效,甚至更新票证,更新消息。它只是不会超过第一个换行符。
编辑代码:正如我上面提到的,我确实让 IdHTTP 使用 post 参数对我的文本进行编码,所以它应该可以工作,并且正如我在上面也提到的,我尝试对其进行预编码,结果是 WHMCS 不会取消-然后编码,只显示%20
's和other's。既然有人问我应该提一下,我正在使用 Indy 10!所以我是最新的最新版本。
j := TStringList.Create;
ret := TStringStream.Create('');
j.Text := k+params+'action='+method+'&responsetype=json&username='+username1.Text+'&password='+password;
try
htp1.Post('http'+s+'://'+url1.Text+'/includes/api.php', j, ret);
except
on E: EIdHTTPProtocolException do
result := '{"result":"error", "message":"'+htp1.ResponseText+'"}';
end;