轻量消息队列(原 MNS)返回“[Error Code]:InvalidRequestURL, [Message]:Http request URL format invalid”的错误

当用户发出请求的URL有误时,轻量消息队列(原 MNS)服务器端会返回Http request URL format invalid。本文介绍不同情况下如何排查。

问题描述

轻量消息队列(原 MNS)服务端返回下列错误:

[Error Code]:InvalidRequestURL, [Message]:Http request URL format invalid

问题原因

引发该报错的可能性如下:

  • 原因一:使用SDK时,Endpoint地址错误。

  • 原因二:使用队列API时,协议版本与请求URL不匹配。

解决方案

不同问题原因的解决方案不同,详情如下:

原因一

如果使用轻量消息队列(原 MNS)SDK,请检查程序代码中的Endpoint值是否正确。正确的Endpoint地址获取方法如下:

说明

常见错误是在代码中将Endpoint错写成队列地址,导致报错。示例如下:

  • 正确:String endpoint = "http://4xxx4.mns.cn-beijing.aliyuncs.com/";

  • 错误:String endpoint = "http://4xxx4.mns.cn-beijing.aliyuncs.com/queues/LTQueue/";

  1. 登录轻量消息队列(原 MNS)控制台

  2. 在左侧导航栏,选择队列模型 > 队列列表

  3. 在顶部菜单栏,选择地域。

  4. 队列列表中,找到目标队列,在其右侧操作列单击详情

  5. 队列详情页面的接入点区域,查看公网访问内网访问对应的Endpoint。

    说明

    Endpoint地址支持HTTPHTTPS两种访问方式。

  6. 使用新获取的Endpoint值进行测试。

原因二

如果使用队列API, 请检查使用的是新协议还是历史协议,确保请求中的URL符合协议对应的规范。新旧协议规范如下:

协议版本

CreateQueue

SendMessage

新协议(x-mns-version:2015-06-06)

PUT /queues/[$Queue_Name]

POST /queues/[$Queue_Name]/messages

历史协议(x-mqs-version:2014-07-08)

PUT /[$Queue_Name]

POST /[$Queue_Name]/messages

说明

[$Queue_Name]指队列名称。