.net core WebApi 接收不到 application/json; charset=utf-8 的值

qiushangju 2019-12-31 04:36:02
当参数标记为 [FromBody] 时接收不到 application/json; charset=utf-8的值 只能接收到Content-Type=application/json的值 ,
怎么处理才能接收到application/json; charset=utf-8的值呢??
...全文
11671 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eason0807 2021-05-20
  • 打赏
  • 举报
回复
引用 6 楼 Null_Reference 的回复:
我感觉controller 上面加一个[ApiController] 就解决 了
正解,楼主创建的不是api控制器
Null_Reference 2021-05-19
  • 打赏
  • 举报
回复
我感觉controller 上面加一个[ApiController] 就解决 了
  • 打赏
  • 举报
回复
兄弟 解决了吗
  • 打赏
  • 举报
回复
如果已结请给分
  • 打赏
  • 举报
回复
1.web.config 需要配置跨域

<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS " />
        <add name="Access-Control-Allow-Headers" value="x-requested-with,content-type" />
        <add name="Access-Control-Allow-Origin" value="*" />
      </customHeaders>
    </httpProtocol>
2.前端代码

  $("#save").click(function(){ 
		jQuery.support.cors = true;
		var jdata = {"access_token":"1231","createtime":"123","expires_in":"123"};
		$.ajax({
			url: 'http://192.168.1.81:8492/api/values/testPost',
			type: "POST",
		    contentType:"application/json; charset=urf-8",   //指定的是类型json串,不是 json 对象
			dataType:'json',    
			data:  JSON.stringify(jdata),
			crossDomain: true,
			success: function (returndata) {
				alert(JSON.stringify(returndata));
			},
			error: function (returndata) {
				alert(2);
			}
		});
    });
3.后端api

    [HttpPost, HttpOptions]
        [ActionName("testPost")]
        public ApiResult testPost()
        {
            try
            {
                // 接收
                Stream inputstream = HttpContext.Current.Request.InputStream;
                byte[] b = new byte[inputstream.Length];
                inputstream.Read(b, 0, (int)inputstream.Length);
                string inputstr = UTF8Encoding.UTF8.GetString(b);

                return new ApiResult
                {
                    IsError = false,
                    Msg = "获取成功",
                    PageCount = 1,
                    Result = inputstr
                };
            }
            catch (Exception err)
            {
                return new ApiResult
                {
                    IsError = true,
                    Msg = "失败",
                    PageCount = 1,
                    Result = "testPost"
                };
            }
        }
4.答应结果
exception92 2019-12-31
  • 打赏
  • 举报
回复
参数设置为string类型,json格式表示即可。
exception92 2019-12-31
  • 打赏
  • 举报
回复
什么叫作“ application/json; charset=utf-8的值”,这只是设定数据传输时的编码格式,以json,还是以xml,charset表示字符集格式。

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧