gpt4 book ai didi

javascript - HTTP 请求未正确发送数据

转载 作者:行者123 更新时间:2023-12-03 02:56:55 25 4
gpt4 key购买 nike

我制作了一个简单的 JavaScript 页面,该页面应显示时间表并在按下“发送”按钮时通过 HTTP 发送数据。

数据应该使用这个简单的方案发送到 Arduino:

http://arduinoip/DATASTARTSHEREhh:mm;hh:mm;hh:mm;[...];DATAENDSHERE

我使用以下代码打印在 Arduino 串行监视器中收到的所有数据:

void loop() {
// listen for incoming clients
EthernetClient client = ArduinoServer.available();
String message = "";
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
message += c;
if (c == '\n' && currentLineIsBlank) {
cmd = message.indexOf(DATASTARTING);
Serial.print("CMD Value: ");
Serial.println(cmd);
if(cmd > 0){
//I received some data and i want to know what it is.
msg = message.c_str();
char actChar = msg[cmd + 14]; //14 is the size of the string "DATASTARTSHERE"
Serial.print("First character of data I'm interested in: ");
Serial.println(actChar);
int count = 0;
values = "";
while(actChar != 'D'){
values += actChar;
count++;
actChar = msg[cmd + 14 + count];
}
Serial.print("Values i got: ");
Serial.println(values);
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
//client.println(params_to_html());
client.println("I received data");
client.println("</html>");
Serial.println(message);
break;
}else{
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("I didn't receive data");
client.println("</html>");
Serial.println(message);
break;
}
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disconnected");
}
}

我收到的数据如下:

new client

CMD Value: -1

GET /DATASTARTSHERE10:10;11:11;12:12;13:13;14:14;15:15;16:16;17:17;18:18;19:19;20:20;21:21;22:22;23:23;DATAENDSHERE HTTP/1.1

Host: 192.168.1.32

Connection: keep-alive

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8

Accept-Encoding: gzip, deflate

client disconnected

new client

CMD Value: -1

GET /favicon.ico HTTP/1.1

Host: 192.168.1.32

Connection: keep-alive

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36

Accept: image/webp,image/apng,image/,/*;q=0.8

Referer: http://192.168.1.32/DATASTARTSHERE10:10;11:11;12:12;13:13;14:14;15:15;16:16;17:17;18:18;19:19;20:20;21:21;22:22;23:23;DATAENDSHERE

Accept-Encoding: gzip, deflate

Accept-Language: it-IT,it;q=0.9,

client disconnected

有两件事我不明白:

  1. 为什么我收到两个回复?一种是 GET/whatisaftertheURL,另一种是 GET/favicon.ico?

  2. 为什么cmd即使我给它的值是indexOf(DATASTARTING),值也是-1当DATASTARTINGconst char*"DATASTARTSHERE"里面的值?

如果我删除一些行,例如

Serial.print("CMD Value: ");
Serial.print("First character of data I'm interested in: ");
Serial.println(actChar);

cmd成为 DATASTARTSHERE 的正确索引在消息中,但我不明白这些行与 cmd 的值有什么关系,因为它是在执行这些行之前进行比较的。

我没能再次触发它,但添加了一些其他行来分割消息,在分割之前打印消息只打印我在 mi JS 页面中发送的值的一半。

这对我来说没有意义,那么我可以从网页接收的内容是否有限制?

我没有发布我的 JS 页面的代码,因为我发现它没有必要,但如果不是,我会发布它。

最佳答案

浏览器总是向 Favicon.ico 发出请求,请阅读 this here

据我所知,您可以阻止它发生,但这并不是真正必要的,可以安全地忽略。

对于第二个问题,如果在数组或字符串中找不到该元素,则 indexOf() 返回 -1,因此 message 不会在您检查时包含DATASTARTING

可能是 c == '\n' && currentLineIsBlank 您的 c 中的第一行由于某种原因是空白的?但您应该仔细检查这些值。我会删除逻辑并在迭代时打印这些值,以便您可以更好地了解正在发生的情况。

关于javascript - HTTP 请求未正确发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47576822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com