关于颤振/飞镖,我有一些非常简单甚至愚蠢的问题。我在GCE托管的MV上设置了一个非常简单的TCP / IP服务器,其代码如下:
import socket
HOST, PORT = '', 8889
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind((HOST, PORT))
listen_socket.listen(1)
while True:
client_connection, client_address = listen_socket.accept()
request = client_connection.recv(1024)
print(request)
response = """\
HTTP/1.1 200 OK
Hello, World!
"""
client_connection.sendall(http_response.encode())
client_connection.close()
如果我通过浏览器或curl / http / telnet(即通过调用)打开它
$ curl http://my-ip:8889/
我得到“你好,世界!”背部。但是,如果尝试通过使用http.get来快速获得“ Hello,world”,则我总是会收到“无效的响应原因短语”。在下面找到代码:
Future<String> getTextFromLocalhost() async {
print("Debug line");
final response = await http.get("http://my-ip/");
print(response.statusCode);
print(response.headers);
print(response.body.toString());
if(response.statusCode==200){
return response.body.toString();
} else {
throw Exception("Failed to get data from GCE!");
}
}
在控制台中,我看到第一个调试行显示“ Debug line”:
I/flutter (24051): Debug line
但是,似乎没有其他打印命令可以产生输出。此外,我可以在服务器端看到GET请求已正确提交到服务器。
此外,如果尝试从其他来源获取信息,例如'https://jsonplaceholder.typicode.com/posts/1',该代码可以很好地运行并完成应做的事情。我以为flutter / dart可能无法识别简单的标头,因此我尝试将标头从'https://jsonplaceholder.typicode.com/posts/1'复制到服务器响应中,但这也无济于事。
有人知道我的组合出了什么问题吗?