c#后端调用接口传递json中文变为?

调用接口传递json步骤

1.后端需要进行josn化,就需要引用Newtonsoft.Json此类库
2.利用JsonConvert.SerializeObject()实现类对象的json化
3.通过post方式将json传递给接口,此处需要知道编码格式,例如:utf-8、gbk等,此示例中用的是gbk
代码如下:

//声明一个对象,对象里边包括需要传递的json中的各个属性
 PubDwMessage message = PubDwMessage.Create(3);
 message.input=row["id"].ToString();
 //中间属性赋值部分省略........
 //此处将对象序列化为一个json字符串,其中StringEscapeHandling.EscapeNonAscii 将json字符串中的汉字进行了unicode编码,例如汉字张编码后为\u5f20
  string serJson = JsonConvert.SerializeObject(message, new JsonSerializerSettings() { StringEscapeHandling = StringEscapeHandling.EscapeNonAscii });
  //声明编码格式为gbk
  Encoding gbk = Encoding.GetEncoding("gbk");
  //创建一个PostInf对象
  PostInf PI = new PostInf();
  //调用PostJson方法进行接口调用传递json
  //reqUrl:接口地址;serJson:json字符串;gbk:编码格式
  string result = PI.PostJson(reqUrl, serJson, gbk);
  //PsotInf类中的PostJson方法
    public string PostJson(string url, string josn, Encoding encoding = null)
        {

            if (encoding == null)
            {
                encoding = Encoding.UTF8;
            }

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "application/json";
            //
            request.Timeout = 30000;  //30s
            //              
            Stream streamrequest = request.GetRequestStream();
            StreamWriter streamWriter = new StreamWriter(streamrequest, encoding);
            streamWriter.Write(josn);
            streamWriter.Flush();
            streamWriter.Close();
            streamrequest.Close();

            //设置连接超时时间
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream streamresponse = response.GetResponseStream();
            StreamReader streamReader = new StreamReader(streamresponse, encoding);
            string result = streamReader.ReadToEnd();
            streamresponse.Close();
            streamReader.Close();
            return result;
        }

如此设置后,可以在调用接口时正确的传递带中文的json数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~扶摇九万里 ~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值