當使用者發出請求的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/";
在左側導覽列,選擇。
在頂部功能表列,選擇地區。
在队列列表中,找到目標隊列,在其右側操作列單擊详情。
在隊列詳情頁面的接入点地區,查看公网访问和内网访问對應的Endpoint。
說明Endpoint地址支援HTTP和HTTPS兩種訪問方式。
使用新擷取的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]指隊列名稱。