如何在flutter / dart中正确使用http.get

时间:2018-09-19 07:23:09

标签: http dart flutter

关于颤振/飞镖,我有一些非常简单甚至愚蠢的问题。我在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'复制到服务器响应中,但这也无济于事。

有人知道我的组合出了什么问题吗?

0 个答案:

没有答案
相关问题