2011-10-11 83 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