所以我正在尝试使用Arduino Due和SIM7600 LTE Shield将GET请求发送到服务器。我尝试了多个服务器无济于事,而且我不确定自己做错了什么。下面是我的AT命令
import pandas as pd
df = pd.DataFrame({'ZIP_KEY': ['A', 'B','C', 'A', 'B', 'A'],
'start_month': [1, 2, 2, 6, 8, 10],
'end_month': [4, 3, 7, 7, 12, 12]})
df["list"] = df.apply(lambda x: list(range(x["start_month"], x["end_month"]+1)),
axis=1)
df = df.explode("list")
df.groupby("list")["ZIP_KEY"].nunique()
以下是响应:
19:34:00.607 -> AT+CHTTPACT="website.co.uk",80
19:34:00.710 -> +CHTTPACT: REQUEST
19:34:07.533 -> GET website.co.uk/4gtest.php HTTP/1.0
19:34:12.302 -> Host: website.co.uk
19:34:19.101 -> Content-Length: 42
19:34:28.000 ->
19:34:28.000 -> OK
肯定有Internet连接,因为它会从服务器返回自定义错误页面,但是我不确定为什么它无法获取我想要的页面。 任何帮助将不胜感激
谢谢
答案 0 :(得分:0)
我已经能够通过以下请求获得服务器响应:
GET /4gtest.php HTTP/1.1<CR><LF>
Host: website.co.ukCR><LF>
<CR><LF>
<CR><LF>
我得到Error 404
的响应,可能是因为它是当前已删除的测试页。无论如何,它不是Error 400
的响应,至少意味着该请求没有格式错误。
有关请求的一些描述:
GET
命令之后,仅预期路径(由用户@juraj的注释正确建议)HTTP/1.1
,因此我为请求使用了相同的版本Host: website.co.uk
行中传递<CR>
+ <LF>
一对字符结尾(回车,0x13 ASCII,换行,0x10 ASCII)。指定它很重要,因为在您的问题中尚不清楚线是如何终止的<CR>
+ <LF>
对会终止请求的标头部分Content-Length
我在请求中省略了Content-Length
字段。正如在this question的答案中很好地解释的那样,此字段指定消息正文中标头的 之后的八进制数。但是:
是的,您可以使用GET发送请求正文,但其中不应包含任何内容 含义。如果您通过在服务器上解析它来赋予它含义, 根据其内容更改响应,然后您将忽略 HTTP/1.1 spec, section 4.3
中的此建议