我制作了一个简单的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");
}
}
我收到的数据如下:
新客户
CMD值:-1
获取 /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
主持人:192.168.1.32
连接:保持活力
升级不安全的请求:1
用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/62.0.3202.94 Safari/537.36
接受:text/html, Application/xhtml xml, Application/xml; q=0.9, Image/webp, Image/apng,/; q=0.8
接受编码:gzip,deflate
客户端断开连接
新客户
CMD值:-1
GET/favicon.icoHTTP/1.1
主持人:192.168.1.32
连接:保持活力
用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/62.0.3202.94 Safari/537.36
接受:image/webp、image/apng、image/、/*;q=0.8
推荐人: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
接受编码:gzip,deflate
接受-语言: it-IT, it; q=0.9,
客户端断开连接
有两件事我不明白:
>
为什么我得到两个回应?一个带GET /whatisaftertheURL一个带GET/favicon.ico?
为什么cmd
值是-1,即使我给它的值indexOf(DATASTARING)
当DATASTARING
是一个const char*
与"DATASTARTSHERE"
值在里面?
如果我删除一些行,比如
Serial.print("CMD Value: ");
Serial.print("First character of data I'm interested in: ");
Serial.println(actChar);
cmd
成为消息中datastartsher
的正确索引,但我不知道这些行与cmd
的值有什么关系,因为在执行这些行之前会对其进行比较。
我没有再次触发它,但添加了一些其他行来拆分消息,在拆分之前打印消息只打印我在mi JS页面中发送的值的一半。
这对我来说没有意义,那么我可以从网页上接收的内容有限制吗?
我没有发布我的JS页面的代码,因为我发现它是不必要的,但如果不是,我会发布它。
浏览器总是请求Favicon.ico,请在这里阅读
AFAIK你可以阻止它的发生,但它不是真正必要的,可以安全地忽略。
对于第二个问题,indexOf()
如果在数组或字符串中找不到元素,则返回-1
,以便在检查时消息
不包含数据启动
。
可能是c=='\n'
很多时候我们需要在页面打开的时候,读取远程的内容,然后在当前页面显示. 这就需要用到 http请求了. vue页面调用http请求 vuejs 内置了对发送http请求的支持. 只需要在对应页面的script 标签内加上对应的代码就好. 例如: 我们新增一个页面,叫 "博客列表页" : src/components/BlogList.vue, 内容如下: <template> <div >
这个请求在postman中工作得非常好,所以我认为它与cors相关,并安装了fastify-cors,但我仍然得到同样的错误。 有人有什么建议如何解决这个问题吗?
我是一个使用angular的新手,我正在努力学习一点,但我不能使用令牌进行简单的获取。我做了很多研究,最后总是得到这段代码。 对于我的后端,我使用Kotlin/Springboot并配置了Cors。 即使如此,当尝试这样做请求我得到这个错误。 访问位于“”的XMLHttpRequesthttp://localhost:5000/api-v1/来源的帐户/列表 -- 果心js:15713错误Http
我试图将一些数据发送到API,但Zapier只会发送我体内的第一行,任何关于如何将所有数据发送到API的建议。因此,在下面的代码中,将发送,但将不发送。
这里是LocationSearchMetaData.java 我的控制器 我的客户要求是这样的 下面是实际数据请求 获取时出错I:
本文向大家介绍详解Java发送HTTP请求,包括了详解Java发送HTTP请求的使用技巧和注意事项,需要的朋友参考一下 前言 请求http的Demo是个人亲测过,目前该方式已经在线上运行着。因为是http请求,所有发送post 和get 请求的demo都有在下方贴出,包括怎么测试,大家可直接 copy到自己的项目中使用。 正文 使用须知 为了避免大家引错包我把依赖和涉及到包路径给大家 HTTP 发