使用curl调用Matrix API检查用户名可用性时遇M_UNKNOWN错误求助
问题:调用Matrix API检查用户名可用性返回M_UNKNOWN错误
我尝试用curl通过Matrix协议调用matrix.org服务器的API检查用户名可用性,执行了以下命令:
curl -H "Content-Type: application/json" -X GET "https://matrix.org/_matrix/client/v3/register/available?username=john" -d "{}"
或简化版本:
curl -X GET "https://matrix.org/_matrix/client/v3/register/available?username=john"
但始终返回错误:
{"errcode":"M_UNKNOWN","error":"Server is unavailable"}
我确认请求符合Matrix v1.11客户端-服务器API规范,且服务器可用:一是能响应上述请求(虽返回错误),二是正常响应版本请求:
curl -H "Content-Type: application/json" -X GET "https://matrix.org/_matrix/client/versions" -d "{}"
请问哪里操作有误?
解决建议
GET请求禁止携带请求体:你第一个命令同时使用
-X GET和-d "{}",会构造出带请求体的GET请求,这不符合HTTP标准规范,matrix.org服务器会对这类异常请求直接返回错误。请完全移除-d "{}"参数,仅使用不带请求体的GET命令。添加合法的User-Agent请求头:多数公共API会拦截无User-Agent标识的请求,matrix.org也有这类限制。修改命令如下(可替换为你实际的curl版本或其他合法标识):
curl -H "User-Agent: curl/7.88.1" -X GET "https://matrix.org/_matrix/client/v3/register/available?username=john"
- 注意公共服务器的请求限制:matrix.org作为大型公共Matrix服务器,对未认证请求有频率限制和拦截机制。如果多次请求失败,建议间隔一段时间重试,或者改用自己搭建的Matrix服务器测试API,验证规范请求的有效性。
内容的提问来源于stack exchange,提问作者LiterallyCode
相关产品推荐
相关产品推荐

