Использование веб-службы Nodejs через клиент C # - PullRequest
0 голосов
/ 14 марта 2019

У меня есть веб-сервис, написанный на nodejs и разрабатывающий клиент на c #. У меня нет проблем с методом 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);
    });
});

так что моя проблема в том, что

после выполнения с использованием (var dataStream = request.GetRequestStream ())

мой метод post запущен и req.body пуст, потому что я не передаю никаких параметров перед запуском метода ..

как я могу решить эту проблему?

1 Ответ

0 голосов
/ 14 марта 2019

Я решил проблему .. Я до сих пор не знаю, что на самом деле проблема, но код ниже, работает ..

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 #,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...