2011-10-11 33 views
1

我們在我們的項目中使用了Drools Guvnor,我們使用rest api來檢索軟件包/資產版本。一切工作正常,直到我們嘗試使用波蘭字符,如「ł」。例如,我們有一個名爲'test3'的包和一個名爲「wiek na podstawie PESEL - przedział3」的資產(規則)(名字本身並不重要,重要的是這個「ł」在最後一個詞中)。檢索的全包休息XML文件中,我們得到這樣一個片段:從的Guvnor API的具體錯字REST API無法正確識別波蘭語字符?

&ltassets> 
    http://localhost:8080/drools-guvnor/rest/packages/test3/asset/wiek%20na%20podstawie%20PESEL%20-%20przedział%203 
</assets> 

Asside(應該是/ TEST3/資產,不/ TEST3/資產)這個環節沒有按不工作 - 瀏覽器會自動將「ł」轉換爲UTF-8等效的「%C5%82」,並拋出一個錯誤代碼,看起來該頁面不被REST識別(不正確的資產名稱)。 「」的工作正常,因爲「%20」,問題似乎與16b字符。

有沒有解決這個問題的方法?

+0

這被記錄爲瀏覽器的正確行爲。顯然服務器端配置不正確。 – bmargulies

+0

我想,瀏覽器會自動將任何網址中的「%C5%82」轉換爲「ł」,並且我還讀取了Guvnor REST api僅配置爲UTF-8字符集。但是,這仍然給我們留下了使用標準方法無法使用Guvnor REST API找到的Drools資產。我的意思是,有一個解決方法來檢索這些資產,或者爲Guvnor禁止名稱上的16b字符的方式? – r3mbol

+0

我知道Unicode,但我不能幫你用Drools。在那裏有一個編碼設置,我不得不猜測。 – bmargulies

回答

1

找出一個簡單的解決方法。我不需要調用{rest-path}/packages/{package-name}/assets/{asset-name}來獲取資產信息,而是將{rest-path}/packages/{package-name}/assets /獲取包中的所有資產。

這不僅因爲它省略了不起作用的http請求,而且避免了多次請求,在我們的案例中,這有助於證明應用程序出現競爭條件問題(當我們檢索所有資產版本信息和在請求時間之間有人重建Guvnor中的包)。

+0

這與他的性格困境有什麼關係? – bmargulies

+0

早些時候,我使用了資產名稱部分具有「ł」的URL,但未正確識別。經過一番閱讀後,我發現Guvnor Rest API允許您在不調用名稱的情況下檢索所有資產信息,所以現在「ł」字符位於結果中的xml文件中。 因此,這不是一個'解決方案',只是一個'解決方法' - 但它適用於我。 – r3mbol