我正在编写一个 Windows 商店应用程序,并在我的 DAL 中从 Web 服务获取 XML 数据。我正在使用站点 API 公开的 HTTP GET 请求和响应。
我能够从不需要参数的各种方法中成功获取数据,或者获取整数参数..
当我不得不使用字符串参数时,问题开始了,英文字符串成功传递,但希伯来语字符串没有。
当我使用网站 API 开发的测试表单时,在 textBox 中输入“נאפיס”,它返回一个 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/ 我看到如果我对那个字符串进行 URL 编码( ðàôéñ) 我将得到所需的 %F0%E0%F4%E9%F1。
所以我将该字符串发送到 api,但它再次显示为 %C3%B0%C3%A0%C3%B4%C3%A9%C3%B1 ang 只返回没有实际数据的 XML 架构。
我尝试的另一种方法是对希伯来语单词进行不同的编码。由于 WinRT 不支持“httputility”,我不得不用反射器将它导入回来.. 必须告诉你,这不好玩..
我最终得到了带有 %u05e0%u05d0%u05e4%u05d9%u05e1 的编码“נאפיס”当我从浏览器中使用它时:
它工作得很好,获取实际的 XML 数据,并且在嗅探器中,参数保持不变(%u05e0%u05d0%u05e4%u05d9%u05e1)。
但是当我从我的代码中使用它时,我再次只得到架构,并且在嗅探器中,我看到字符串被编码为:%25u05e0%25u05d0%25u05e4%25u05d9%25u05e1 意味着它再次被 URL 编码!
我对此感到非常绝望..我尝试了所有组合..
有人对此有任何想法吗?谢谢。