由于 Web API 中的特殊字符,未设置 Post 值

2023-11-29

我正在尝试向我的 Web api 服务发布帖子。重点是,在发送类似消息时

{ message: "it is done" }

工作正常。但是,当我在消息中使用 çıöpş 等特殊字符时,它无法转换我的 json,因此 post 对象保持为空。我能做些什么?这要么是当前的文化问题,要么是其他问题。我尝试使用编码 HttpUtility 类以 HtmlEncoded 样式发送我的 post 参数,但它也不起作用。

public class Animal{

  public string Message {get;set;}
}

网页API方法

public void DoSomething(Animal a){

}

Client

Animal a = new Animal();
a.Message = "öçşistltl";
string postDataString = JsonConvert.SerializeObject(a);        
string URL = "http://localhost/Values/DoSomething";
WebClient client = new WebClient();

client.UploadStringCompleted += client_UploadStringCompleted;
client.Headers["Content-Type"] = "application/json;charset=utf-8";
client.UploadStringAsync(new Uri(URL), "POST",postDataString);

此致,

Kemal


一种可能性是使用异步上传数据方法允许您在编码数据时指定 UTF-8,因为UploadStringAsync您使用的方法基本上使用Encoding.Default将数据写入套接字时对数据进行编码。因此,如果您的系统配置为使用 UTF-8 以外的其他编码,您就会遇到麻烦,因为UploadStringAsync使用您的系统编码,而在您指定的内容类型标头中charset=utf-8这可能是矛盾的。

随着UploadDataAsync方法你可以更明确地表达你的意图:

Animal a = new Animal();
a.Message = "öçşistltl";
string postDataString = JsonConvert.SerializeObject(a);        
string URL = "http://localhost/Values/DoSomething";
string postDataString = JsonConvert.SerializeObject(a);
using (WebClient client = new WebClient())
{
    client.UploadDataCompleted += client_UploadDataCompleted;
    client.Headers["Content-Type"] = "application/json; charset=utf-8";
    client.UploadDataAsync(new Uri(URI), "POST", Encoding.UTF8.GetBytes(postDataString));
}

另一种可能性是指定客户端的编码并使用UploadStringAsync:

Animal a = new Animal();
a.Message = "öçşistltl";
string postDataString = JsonConvert.SerializeObject(a);        
string URL = "http://localhost/Values/DoSomething";
string postDataString = JsonConvert.SerializeObject(a);
using (WebClient client = new WebClient())
{
    client.Encoding = Encoding.UTF8;
    client.UploadStringCompleted += client_UploadStringCompleted;
    client.Headers["Content-Type"] = "application/json; charset=utf-8";
    client.UploadStringAsync(new Uri(URI), "POST", postDataString);
}

或者如果您安装Microsoft.AspNet.WebApi.Client客户端上的NuGet包可以直接使用新的HttpClient类(这是新来的)来使用你的 WebAPI 而不是WebClient:

Animal a = new Animal();
a.Message = "öçşistltl";
var URI = "http://localhost/Values/DoSomething";
using (var client = new HttpClient())
{
    client
        .PostAsync<Animal>(URI, a, new JsonMediaTypeFormatter())
        .ContinueWith(x => x.Result.Content.ReadAsStringAsync().ContinueWith(y =>
        {
            Console.WriteLine(y.Result);
        }))
        .Wait();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

由于 Web API 中的特殊字符,未设置 Post 值 的相关文章

  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 实体框架 - 选择特定列并返回强类型而不丢失强制类型转换

    我正在尝试做类似的事情这个帖子 https stackoverflow com questions 1094931 linq to sql how to select specific columns and return strongly
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的

随机推荐

  • 无法获取移动服务的位置信息 - 错误 400

    我尝试按照 Scotts 在此页面上对 Azure 的介绍进行操作 https www windowsazure com en us develop mobile tutorials get started 但在第 4 点 当我打算创建新的
  • Mysql 查询 - 使用 join/union 等

    我的数据库中有 4 个表 名为顾客 保存他们的个人详细信息以及他们在哪个项目中的哪个房间 payments 持有该项目的付款详细信息 projects 持有项目详细信息 和staff 持有员工登录信息 我还有 3 个页面 我从所有这些页面中
  • mysql命名约定

    我通常总是使用某种Hungarian Notation对于我的表中的字段名称 例如 Table Users u id u name u email etc Posts p id p u id p title p content etc 但最
  • Node.js Express:对 ejs 模板感到困惑

    我把我的ejs模板文件在views文件夹如 views foo html layout html 所以我配置我的 ejs 模板 app set views dirname views app engine html require ejs
  • 施工期间的虚拟功能解决方法

    我有一个具有虚函数的基类 我想在构造过程中调用该类 因为我希望为每个派生类调用该函数 我知道我无法在构造过程中调用虚拟函数 但我想不出一个优雅的 即避免重复代码 解决方案 在构造过程中调用虚函数有哪些解决方法 我想避免这种情况的原因是因为我
  • 如何在 html 页面中创建“转到邮箱”链接?

    我正在创建一个确认页面 其中显示 验证电子邮件已发送到您的邮箱 电子邮件受保护 请点击
  • 如何将 Gradle 插件(及其依赖项)加载到 build.gradle 中?

    我有一个有两个 gradle 文件的项目 build gradle and myPlugin gradle The myPlugin gradle实现了插件接口 该插件还依赖于osDetector gradle 插件 我将两个 gradle
  • open() 函数对于包含特殊字符的文件路径无法正确运行

    我正在写这个简单的代码 file input File to read fhand open file r 我要打开的文件名为 test txt 它位于子文件夹中 因此 我在请求的输入中输入的是 DB test txt 嗯 它不起作用 返回
  • 如何在php中的特定日期发送?

    我想要一张电子贺卡或类似的东西 用户可以选择电子贺卡 选择后 他必须输入一些字段 例如姓名 收件人和发件人 电子邮件 收件人和发件人 消息 我想让用户选择发送电子贺卡的日期 如何在特定日期发送电子贺卡 我需要编写一个每天运行的脚本吗 怎么做
  • 带有角度的 requirejs - 不解决嵌套路由的控制器依赖关系

    The RequireJS当路由具有多个级别时 无法正确解决依赖关系 如下所示http www example com profile view 如果我有http www example com view 控制器依赖性已正确解决 我的 bo
  • python:递归检查以确定字符串是否是回文

    我的任务是定义一个过程 is palindrome 它将字符串作为输入 并返回一个布尔值 指示输入字符串是否是回文 在这种情况下 单个字母应该返回 True 空字符串也应该返回 True 不幸的是 我没有得到预期的结果 我很感激你的帮助 我
  • 修改 PhaseListener 中的 JSF 组件树

    我有一个问题 我已经实现了一个 PhaseListener 它的目的是向树中附加有消息的任何 UIInput 组件添加一个样式类 如果没有附加任何消息 则删除该样式类 PhaseListener 在 RENDER RESPONSE 阶段运行
  • ST2 键盘映射:“expand_selection”的参数

    有谁知道如何在 Sublime Text 2 中编辑 expand selection 键盘映射 以便它只选择当前行而不是后面的换行符 默认的键盘映射是这样的 keys ctrl l command expand selection arg
  • Android:尝试 HttpURLConnection.getOutputStream() 时抛出 SocketException

    这是我的第一个 Android 程序 它是一个修改后的 hello world 我在 MAC 上的模拟器上运行它 我尝试与 NET Web 服务通信 但出现异常connection getOutputStream 我可以从模拟器访问该网站
  • scanf() 可变长度说明符

    如何使用变量来指定最大字符数scanf 应该读进去吗 例如使用printf 你可以像这样使用 define MAXVAL 5 printf Print at maximum MAXVAL chars s n MAXVAL myStringH
  • JS ES6 通过键数组过滤对象的正确方法

    我想获取一个对象数组并过滤每个对象以仅返回键与数组中的项目匹配的属性 例如 const myKeys key 1 key 3 const myArray key 1 Some Value A key 2 Some Other Value A
  • jqgrid 搜索弹出窗口允许删除所有过滤器!

    我正在 JqGrid 上尝试非常简单的搜索弹出窗口 请参阅下面的代码 有几个问题 The popup comes up with AND OR and controls at the very top See screenshot belo
  • pandas to_csv输出引用问题

    我在获取熊猫时遇到了麻烦dataframe to csv 输出正确的引用字符串 import pandas as pd text this is out text df pd DataFrame index 1 columns 1 2 df
  • 是否可以使用 OpenGL 以 RGB888 进行渲染?

    我在各种设备上的 Android 上玩过一段时间的 OpenGL 除非我错了 否则默认渲染始终使用 RGB565 像素格式执行 不过 我想使用 RGB888 渲染更准确的颜色 The GL表面视图文档提到了两种与像素格式相关的方法 the
  • 由于 Web API 中的特殊字符,未设置 Post 值

    我正在尝试向我的 Web api 服务发布帖子 重点是 在发送类似消息时 message it is done 工作正常 但是 当我在消息中使用 p 等特殊字符时 它无法转换我的 json 因此 post 对象保持为空 我能做些什么 这要么