调用dxtrade.ftmo.com接口时遭遇403认证错误求助
MQL调用DxTrade登录接口返回403错误的排查与解决
问题描述
使用MQL代码对接DxTrade进行身份认证时,持续返回403错误,日志输出:
2024.06.20 08:55:44.748 DxTradeBridge (USDCHF,H1) login > Server request failed. Response: 403
已按照教程操作,并尝试更换演示环境URL(https://demo.dx.trade/dxsca-web/login)、延长请求超时时间,问题仍未解决。相关代码如下:
#define Base_URL "https://dxtrade.ftmo.com/dxsca-web/" #define ACCOUNT_FTMO "1210096366" #define PASSWORD_FTMO "pass123@P" int OnInit() { login(); return(INIT_SUCCEEDED); } int login() { string url = Base_URL+"login"; char post[], result[]; string headers = "Content-Type: application/json\r\nAccept: application/json\r\n"; string resultHeader; string json = "{\"username\": \"1210096366\", \"domain\": \"default\", \"password\": \"pass123@P\"}"; StringToCharArray(json,post,0,StringLen(json)); ResetLastError(); int res = WebRequest("POST",url,headers,10000,post,result,resultHeader); if (res == -1) { Print(__FUNCTION__, " > Web request failed. Error code: ", GetLastError()); } else if (res != 200) { string msg = CharArrayToString(result); Print(__FUNCTION__, " > Server request failed. Response: ", res); } else { string msg = CharArrayToString(result); Print(__FUNCTION__, " > Request success. Response: ", msg); } return res; }
排查与解决步骤
检查MT平台WebRequest权限
MT4/MT5默认限制WebRequest的目标域名,需在「工具-选项-EA交易」中,将https://dxtrade.ftmo.com和https://demo.dx.trade添加到「允许URL」列表,勾选「允许WebRequest用于所列URL」。补充必要请求头
部分API会校验User-Agent等标识字段,当前请求头缺少该信息,可修改headers参数:string headers = "Content-Type: application/json\r\nAccept: application/json\r\nUser-Agent: MetaTrader/5.0\r\n";修正账号domain参数
FTMO的DxTrade账号domain字段大概率不是default,尝试替换为ftmo,同时用宏替换硬编码的账号密码:string json = "{\"username\": \""+ACCOUNT_FTMO+"\", \"domain\": \"ftmo\", \"password\": \""+PASSWORD_FTMO+"\"}";抓包确认API端点与参数格式
打开DxTrade登录页面,用浏览器开发者工具(F12)抓包实际登录请求,对比代码中的URL、请求头、参数格式是否完全一致,避免因API版本更新导致的不兼容。排查网络与代理
若MT平台使用代理,需确认代理可正常访问目标域名;同时检查本地防火墙是否拦截了对DxTrade服务器的HTTPS请求。
内容的提问来源于stack exchange,提问作者developers studio
相关产品推荐
相关产品推荐

