gpt4 book ai didi

rest - http GET 中的 ClientException "Invalid response reason phrase"

转载 作者:IT王子 更新时间:2023-10-29 06:40:23 26 4
gpt4 key购买 nike

我是 flutter/dart 的新用户,正在将 Android 原生应用程序转换为 flutter。

我正在对我(在 LUA 中)编写的物联网设备(NodeMCU ESP8266)进行 REST 调用,并在(io_client.dart)中的 IOClient 发送函数中抛出异常“无效响应原因短语”。

其余调用在我尝试过的所有其他设备上均成功。

现有代码使用 RetroFit 并且工作正常。我的 Linux PC 上的 Postman 还可以,chrome 和 firefox 也是如此。三星设备的 Chrome 也可以。

如果我改为在我的 Linux PC 上从 json-server(npm 包)提供相同的数据,那么获取成功,所以这肯定与我从 ESP8266 提供响应的内容/方式有关。下面是调用的 Wireshark 跟踪

GET /pins HTTP/1.1
user-agent: Dart/2.1 (dart:io)
accept-encoding: gzip
content-length: 0
host: 192.168.1.78:8080

HTTP/1.1 200 OK
Connection: close
Content-Length: 230
Content-Type: application/json; charset=utf-8

[{"DeactivationTime":0,"OffTime":0,"Name":"Left Deck","MaxOnTime":888,"Pin":1,"ActivationTime":0,"IsActive":false},{"DeactivationTime":0,"OffTime":0,"Name":"Right Deck","MaxOnTime":888,"Pin":2,"ActivationTime":0,"IsActive":false}]

下面是我能做的最简单的测试

String url = 'http://192.168.1.78:8080/pins';
try {
http.get(Uri.parse(url)).then((result) {
debugPrint(result.body.toString());
});
} catch (error) {
debugPrint(error.toString());
}

即使是 404 响应,我也会收到同样的错误。当与 json-server 交谈时,调试输出是预期的 json 对象。我已经尝试使用 header 来匹配 json-server 返回的内容,但无济于事。此外,上面的捕获物永远不会被击中。

只是为了澄清,这里是 Wireshark 的十六进制转储

00000000  47 45 54 20 2f 70 69 6e  73 20 48 54 54 50 2f 31   GET /pin s HTTP/1
00000010 2e 31 0d 0a 75 73 65 72 2d 61 67 65 6e 74 3a 20 .1..user -agent:
00000020 44 61 72 74 2f 32 2e 31 20 28 64 61 72 74 3a 69 Dart/2.1 (dart:i
00000030 6f 29 0d 0a 61 63 63 65 70 74 2d 65 6e 63 6f 64 o)..acce pt-encod
00000040 69 6e 67 3a 20 67 7a 69 70 0d 0a 63 6f 6e 74 65 ing: gzi p..conte
00000050 6e 74 2d 6c 65 6e 67 74 68 3a 20 30 0d 0a 68 6f nt-lengt h: 0..ho
00000060 73 74 3a 20 31 39 32 2e 31 36 38 2e 31 2e 37 38 st: 192. 168.1.78
00000070 3a 38 30 38 30 0d 0a 0d 0a :8080... .
00000000 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 20 HTTP/1.1 200 OK
00000010 0a .
00000011 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 63 6c 6f 73 Connecti on: clos
00000021 65 0a e.
00000023 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 Content- Length:
00000033 32 33 30 0a 230.
00000037 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 61 70 Content- Type: ap
00000047 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 3b 20 plicatio n/json;
00000057 63 68 61 72 73 65 74 3d 75 74 66 2d 38 0a 0a charset= utf-8..
00000066 5b 7b 22 44 65 61 63 74 69 76 61 74 69 6f 6e 54 [{"Deact ivationT
00000076 69 6d 65 22 3a 30 2c 22 4f 66 66 54 69 6d 65 22 ime":0," OffTime"
00000086 3a 30 2c 22 4e 61 6d 65 22 3a 22 4c 65 66 74 20 :0,"Name ":"Left
00000096 44 65 63 6b 22 2c 22 4d 61 78 4f 6e 54 69 6d 65 Deck","M axOnTime
000000A6 22 3a 38 38 38 2c 22 50 69 6e 22 3a 31 2c 22 41 ":888,"P in":1,"A
000000B6 63 74 69 76 61 74 69 6f 6e 54 69 6d 65 22 3a 30 ctivatio nTime":0
000000C6 2c 22 49 73 41 63 74 69 76 65 22 3a 66 61 6c 73 ,"IsActi ve":fals
000000D6 65 7d 2c 7b 22 44 65 61 63 74 69 76 61 74 69 6f e},{"Dea ctivatio
000000E6 6e 54 69 6d 65 22 3a 30 2c 22 4f 66 66 54 69 6d nTime":0 ,"OffTim
000000F6 65 22 3a 30 2c 22 4e 61 6d 65 22 3a 22 52 69 67 e":0,"Na me":"Rig
00000106 68 74 20 44 65 63 6b 22 2c 22 4d 61 78 4f 6e 54 ht Deck" ,"MaxOnT
00000116 69 6d 65 22 3a 38 38 38 2c 22 50 69 6e 22 3a 32 ime":888 ,"Pin":2
00000126 2c 22 41 63 74 69 76 61 74 69 6f 6e 54 69 6d 65 ,"Activa tionTime
00000136 22 3a 30 2c 22 49 73 41 63 74 69 76 65 22 3a 66 ":0,"IsA ctive":f
00000146 61 6c 73 65 7d 5d alse}]

最佳答案

您的服务器提供的 HTTP 略有错误。每个标题行 should end with 0d 0a,而不仅仅是 0a。此外,最后一个 header 和正文之间的分隔符应该是 0d 0a 0d 0a 而不是 0a 0a

关于rest - http GET 中的 ClientException "Invalid response reason phrase",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53940678/

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