當用戶發出請求的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]指隊列名稱。