首页 > 解决方案 > ASP.NET Core + ESP32 HTTP 请求,GET 返回代码 200,但内容不可读

问题描述

我需要从 ESP32 控制器向我的 ASP.NET Core 服务器发出获取请求。问题是,请求成功,但我无法读取字符串,因为它包含奇怪的字符(下图)

在此处输入图像描述

这是我的代码:

#include <Arduino.h>
#include "WiFi.h"
#include "HTTPClient.h"

const char* ssid = "ssid";
const char* password = "pass";

void setup() {

  Serial.begin(9600);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
  }

  Serial.println("Connected to the WiFi network");  

}

void loop() {

  if ((WiFi.status() == WL_CONNECTED)) { 

    HTTPClient http;   
    http.begin("http://172.16.1.146:45455/api/controller/getlastresult/1");

    int httpCode = http.GET();                                        

    if (httpCode == 200) {
        String payload = http.getString();    
        Serial.println(httpCode);
        Serial.println(payload);
      }     
    else {
      Serial.println("Error on HTTP request");
    }

    http.end();
  }

  delay(1000);

}

我注意到如果我更改 url,例如把https://httpbin.org/get放在那里,它工作正常

在此处输入图像描述

所以,我想问题出在我的 ASP.NET Core 代码中。这是此请求的代码:

    [HttpGet]
    [Route("api/controller/getlastresult/{id}")]
    public IActionResult GetLatestResultForController(string id)
    {
        var list = _dbAccessLayer.GetAllVoteResults();
        var appropriateResults = list.Where(item => item.DeviceId.Equals(id) && item.Status == "Finished")
            .OrderBy(item => item.TimeStarted);

        if (appropriateResults.Any())
            return Ok(appropriateResults.Last().Result);

        return BadRequest();
    }

在邮递员中这很好用,所以我很困惑

在此处输入图像描述

希望你能帮我解决这个问题,谢谢

标签: arduinoesp32

解决方案


推荐阅读