2012-11-26 34 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

相关问题