2012-11-26 31 views
0

我正在編寫Windows商店應用程序,並在我的DAL中從Web服務獲取XML數據。 我正在使用網站的API公開的HTTP GET請求和響應。在Windows Store應用程序中GET/POST請求參數編碼問題

我是能夠成功地擺脫各種方法,數據不需要參數, 或獲取整數parametrs ..

問題開始時,我不得不使用字符串參數,順利通過英語字符串,但字符串在希伯來語別。

當我使用由網站的API開發的測試表單,輸入說「נאפיס」到文本框,它返回一個XML罰款,並與嗅探器,我看到該字符串編碼爲%E3%E9%F7 %F1%E9

當我用相同名稱的代碼自己構建URI時,我只獲取XML的模式,並且我看到該字符串編碼爲%D7%93%D7%99%D7%A7%D7 %A1%D7%99 - 含義用UTF-8編碼的URL ..

我嘗試編碼到希伯來語並解碼回UTF-8,並得到這個字符串:ðàôéñ 當我把它放在這樣的工具: http://coderstoolbox.net/string/ i se如果我URL編碼的字符串(ðàôéñ),我會得到所需的%F0%E0%F4%E9%F1。

所以我把這個字符串發送給api,但它只是返回沒有實際數據的XML模式,但它顯示爲%C3%B0%C3%A0%C3%B4%C3%A9%C3%B1。

我試過的另一種方法是以不同的方式對希伯來字進行編碼。 由於WinRT不支持「httputility」,我不得不用反射器將其導入。..必須告訴你,這是沒有趣..

我結束了編碼的「נאפיס」與%u05e0%u05d0 %u05e4%u05d9%u05e1 當我使用它從一個瀏覽器,像這樣:

http://new.rest.co.il/WebService/RestWS.asmx/SearchRestsByName?Keyword=%u05e0%u05d0%u05e4%u05d9%u05e1

它的偉大工程,獲得實際的XML數據,並在嗅探器,參數保持不變(%u05e0% u05d0%u05e4%u05d9%u05e1)。

但是當我使用它從我的代碼,我再次得到的只是架構,並在嗅探器,我看到字符串被編碼到這一點: %25u05e0%25u05d0%25u05e4%25u05d9%25u05e1 這意味着它是網址再次編碼!

我從這個如此絕望。我試了一下所有的組合..

有誰對這個想法?謝謝。

回答

0

在發送到fb之前,你應該先json_encode然後json_decode,它的確有用。 下面是一個PHP例子:

$album_details = array(
    'message'=> 'Live photos from our app',      
    'name'=> $title, // This can be any non-english characters that can be in unicode 
    'access_token'=>$pageAccessToken 
); 

$jsonStr = json_encode($album_details); // THIS IS KEY IN WHATEVER PLATFORM 
$decoded_album_settings = json_decode($jsonStr, true); // THIS IS KEY IN WHATEVER PLATFORM 

$create_album = $this->facebook->api('/'.$this->facebookPageId.'/albums', 'post', $decoded_album_settings); 

的想法是從這裏取:https://stackoverflow.com/a/3806967/1200166

相關問題