当用户发出请求的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/";
- 登录消息服务MNS控制台。
- 切换到MNS实例所在的地域,单击队列,确认存在您创建的MNS实例。
- 单击获取Endpoint。
- 使用新获取的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]指队列名称。