當用戶發出請求的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. 切換到MNS實例所在的地域,單擊隊列,確認存在您創建的MNS實例。
  3. 單擊獲取Endpoint獲取接入點
  4. 使用新獲取的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]指隊列名稱。