簡體   English   中英

使用Android Studio的Google Cloud Endpoints對冒號(:)進行編碼

[英]Encoding of colon (:) with Google Cloud Endpoints, Android Studio

從生成的客戶端庫(使用默認的Android Studio 1.02 / Gradle配置構建)將字符串參數傳遞給AppEngine Dev Server(版本1.9.15)時,我發現字符串參數中的冒號未進行URL編碼。 然后,開發服務器將冒號解釋為請求結構的一部分,該服務器返回404。我尚未在生產環境中對此進行測試。

我不知道這是否僅僅是雲端點庫或開發服務器中的錯誤,但是如果有人有修復或解決方法,那將是不勝感激的。 手動對參數進行URL編碼和解碼有效,但是不是很優雅。 謝謝!

例子:

[Api].[method]("param:with:colon").execute().getItems();

產生請求:

GET /_ah/api/.../param:with:colon HTTP/1.1

和響應:

HTTP/1.1 404 Not Found

沒有冒號的字符串參數可以正常工作。

一種解決方法是,通過在@ApiMethod批注中提供顯式的路徑屬性,將此參數從路徑參數轉換為查詢參數。

在下面的示例代碼中。 默認情況下,參數“ content”是路徑參數。 (此處的默認路徑是“ sayhi / {content}”)

 @ApiMethod(name = "sayHi", httpMethod = "get")
  public HelloGreeting sayHi(@Named("content") String content) throws Exception {
    return new HelloGreeting(content);
  }

添加“路徑”屬性后,“內容”參數將通過/從查詢參數傳遞和提取。

 @ApiMethod(name = "sayHi", httpMethod = "get", path="sayhi")
  public HelloGreeting sayHi(@Named("content") String content) throws Exception {
    return new HelloGreeting(content);
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM