为了账号安全,请及时绑定邮箱和手机立即绑定

通过 C# 客户端使用 Nodejs Web 服务

通过 C# 客户端使用 Nodejs Web 服务

C#
人到中年有点甜 2022-10-23 16:18:44
我有一个 web 服务,用 nodejs 编写并开发 ac# 客户端。我对 GET 方法没有任何问题,但对 POST 有问题。这是我的客户代码 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = methodType.ToString(); UTF8Encoding encoding = new UTF8Encoding(); if (!string.IsNullOrEmpty(content)) {    Byte[] byteArray = encoding.GetBytes(content);    request.ContentLength = byteArray.Length;    using (var dataStream = request.GetRequestStream())    {       dataStream.Write(byteArray, 0, byteArray.Length);    }  }   request.ContentType = "application/json";   try   {     using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())   {     using (var streamReader = new StreamReader(response.GetResponseStream()))      {         var  result = streamReader.ReadToEnd();      }        return response;    }     } .....这是我的服务器代码router.post('/api/activation/activate', urlencodedParser, (req, res, next) => {    return new Promise(function (resolve, reject) {        (async function () {            try {                routerAppFeature.Delete(req.body.type.toUpperCase(), req.body.id);                console.log(req.body.HardwareId);                console.log(req.params.HardwareId)                console.log(req.query.HardwareId);                var result = { "data": "Okay :)" + req.body.HardwareId, "errorCode": "-1" };                res.json(result);            } catch (error) {                console.log('!!Error in activate method: ' + error);                return reject(error);            }        })();    }).catch(error => {        var err = { "message": error.message, "errorCode": "1" };        res.json(err);    });});所以我的问题是执行using (var dataStream = request.GetRequestStream())后我的 post 方法被触发并且 req.body 为空,因为在触发该方法之前我没有传递任何参数..我怎么解决这个问题?
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

我已经解决了这个问题..我仍然不知道真正的问题是什么,但下面的代码正在工作..


public void Test(string content)

{

  using (var client = new HttpClient())

  {

     try

     {

        var res = client.PostAsync("http://localhost:4000/api/activation/activate",

            new StringContent(content, Encoding.UTF8, "application/json");


       res.Result.EnsureSuccessStatusCode();

       Console.WriteLine("Response " + res.Result.Content.ReadAsStringAsync().Result +

       Environment.NewLine);

     }

     catch (Exception e)

     {

       Console.WriteLine(e.ToString());

     }

   }

 }

所以它与nodejs无关,而是c#方面。


查看完整回答
反对 回复 2022-10-23
  • 1 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号