![](/img/trans.png)
[英]java.io.EOFException while reciving a object. send file from client to server through socket
[英]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件事
所以最終的工作代碼行看起來像這樣[在flutter應用中]
Uri.encodeFull("http://10.0.2.2:3000")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.