c# - 尝试上传到 Web 服务时编码不起作用

标签 c# webserver

您好,我正在尝试通过 WebClient 将数据发送到 Web 服务,但它似乎错误地通过了密码字段。下面是我的 WebClient 的代码:

 using (var client = new WebClient())
        {

            client.Encoding = System.Text.Encoding.UTF8;

              var response = client.UploadString(string.Format(SendToServiceURL + "api/SendRequest?Id={0}&product={1}&password={2}", Id, Product, Password),
                        "POST");

            return response;
}

发送前的密码是-GVg4Vs2<)/BFkU(u%Be%C:{<^9

然而,服务收到的密码是 - GVg4Vs2&lt;)/BFkU(u�%C:{&lt;^9

我还尝试使用 HTTP 实用程序包 HtmlEncode功能如下所示,但只返回 GVg4Vs2 .

(请注意,我只是用原始代码中的 Password 替换了下面的 encodedPassword 变量)

var encodedPassword = HttpUtility.HtmlEncode(password);

有没有人知道这是为什么或可能的解决方法?

最佳答案

您需要使用 HttpUtility.UrlEncode而不是 HttpUtility.HtmlEncode .

HtmlEncode<进入&lt;这意味着 & 之后的所有内容是一个新的查询字符串参数。

UrlEncode确保所有“怪异”字符都可以作为查询字符串参数正确传递:GVg4Vs2%3c)%2fBFkU(u%25Be%25C%3a%7b%3c%5e9

但最好不要在查询字符串中放置密码,而是将其作为发布数据的一部分,或者更好地为网络服务调用使用适当的身份验证机制。

关于c# - 尝试上传到 Web 服务时编码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35361812/

相关文章:

c# - 如何将谓词定义为函数参数

c++ - Mongoose 应该渲染一个 html 文件

php - Docker 镜像容器 - 我在哪里可以存储我的文件?

node.js - 使用 node.js 监听 2 个不同的端口

python - Django:如何构建食堂菜单预订系统以避免同现预订?

c# - 如何使用 WPF 创建交互式图形?

c# - 来自 WebApi 的 EF6 合并实体

c# - 在 asp.net core 中使用返回 url

php - 将数据发送到另一个数据库服务器?

c# - 从 Azure 表存储中检索随机行?