簡體   English   中英

Flutter應用程序從服務器接收json文件

[英]Flutter app reciving json file from server

我想將json數據從我的服務器(只是一些基本的節點js服務器)發送到我的應用程序,並且我想在控制台中看到我已接收到該數據並打印出來。

Json文件(僅此而已,沒什么特別的)

[
  {
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
  },
  {
    "userId": 1,
    "id": 2,
    "title": "qui est esse",
    "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
  },
  {
    "userId": 1,
    "id": 3,
    "title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
    "body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
  }

]

服務器代碼

var http=require('http');
var fs=require('fs');
var file=fs.readFileSync('tmp.json','utf8'); //tmp is name of my json file
var server=http.createServer(function(req,res)
{
 res.writeHead(200,{'Content-Type': 'text/plain'}); 
 res.end(file);  
});
server.listen(3000,'127.0.0.1'); 

Flutter應用程序中的代碼,負責獲取文件並打印

class AwesomeButtonState extends State<AwesomeButton>
{
  Future<String>GetData() async
  {
    var responce=await http.get(
      Uri.encodeFull("127.0.0.1:3000"),
      headers: {
      "Accept": "text/json" 
      }
    );
    //print(responce.body);
    List data= json.decode(responce.body); //konwersja na liste
    print(data[1]["title"]); 
      }

  }

我認為的錯誤是:

ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: FormatException: Scheme not starting with alphabetic character (at character 1)

當我嘗試從其他服務器(例如http://jsonplaceholder.typicode.com/posts)獲取數據時,一切正常,因此我認為應用程序不是問題,而是服務器。 我已經嘗試過更改服務器中的Content-Type,但是它沒有用。

“方案不是以字母字符開頭(在字符1處)”錯誤指出您的方案(= url)不正確。 嘗試致電

http.get("http://127.0.0.1:3000"....

為了使它起作用,我需要更改2件事

  1. 在我的本地主機ip地址之前添加http://
  2. 將代碼中的localhost ip地址更改為10.0.2.2:[port],因為這就是android

所以最終的工作代碼行看起來像這樣[在flutter應用中]

Uri.encodeFull("http://10.0.2.2:3000")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM