2015-11-17 87 views
0

當我打電話請求等:西里爾在請求

<serverUrl>/objects.svc/objects(<some-cyrillic-str>)

我有像錯誤: 「URI格式錯誤」。

當我加單引號,所以它變得像:

<serverUrl>/objects.svc/objects('<some-cyrillic-str>')

我有這樣的錯誤:「關鍵屬性‘ID’無效」。

我認爲這個問題是:URL編碼。 在請求URL的servlet西里爾部分變成:%D7%....等),Olingo無法使用它。

問:在這種情況下使用西里爾文的正確方法是什麼?

UPD: Cyr。部分URL由js(encodeURLComponent())工作併發送。 Servlet(然後Olingo)得到這個部分像%D7%...當我嘗試解碼過濾器中的url(在servlet之前)時,我有適當的cyr。部分在過濾器中,但servlet不能再被這樣的URL調用。

+0

正確的方法是將URL編碼 - 在將它傳遞給Olingo之前 - 設計一些解碼機制。 Olingo似乎並不「理解」它的原因很可能是因爲編碼字符串從未被解碼過。 – TR1

+0

Thanx回覆。 查看UPD的問題。 – slider

+0

您使用哪種Olingo版本?如果您將編碼的URL發送到Olingo庫,則Olingo應該正確解碼並處理請求。如果key屬性的類型是Edm.String,則需要單引號。否則,你需要離開它們。 – chrisam

回答

1

它由我自己解決。這在Olingo服務器上很愚蠢。

UPD:
錯誤是:鍵屬性'Id'是INT類型(不是STRING)。糾正後Olingo以正確的方式處理西里爾字符串。

Thanx all。

+0

會很好,如果你描述的錯誤和解決方案 – miraclefoxx

+1

這是正確的!更新了答案。 – slider