Flutter 颤振-通过HTTP Post发送Json

Flutter 颤振-通过HTTP Post发送Json,flutter,Flutter,我试图通过HTTP post发送Json来更新数据库中的记录。我已连接到服务器,但运行请求时出现415“不支持的媒体类型”错误 import 'dart:async'; import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; void main() => runApp(new MyApp()); class MyApp extends

我试图通过HTTP post发送Json来更新数据库中的记录。我已连接到服务器,但运行请求时出现415“不支持的媒体类型”错误

import 'dart:async';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {

@override
Widget build(BuildContext context) {
return new MaterialApp(
  home: new MyHomePage(),
);
}
}

class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
String url = 'http://<Hostname>: 
<Port>/jderest/orchestrator/JDE_ORCH_Sample_UpdateMeterReadings_Generic';


Future<String> makeRequest() async {
var response = await http
    .post(Uri.encodeFull(url), body: json.encode({
  "NewHourMeterReading": "650",
  "EquipmentNumber": "34665",
  "NewFuelMeterReading": "650"
}), headers: {"Accept": "application/json"});

print(response.body);

}

@override
Widget build(BuildContext context) {
return new Scaffold(
    body: new Center(
        child: new RaisedButton(
          child: new Text('Make Request'),
          onPressed: makeRequest,
        )));
}
}
导入'dart:async';
导入“dart:convert”;
进口“包装:颤振/材料.省道”;
将“package:http/http.dart”导入为http;
void main()=>runApp(新的MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回新材料PP(
主页:新建MyHomePage(),
);
}
}
类MyHomePage扩展StatefulWidget{
@凌驾
_MyHomePageState createState()=>new_MyHomePageState();
}
类_MyHomePageState扩展状态{
字符串url='http://:
/jderest/orchestrator/JDE_ORCH_Sample_updateterreadings_Generic';
Future makeRequest()异步{
var response=wait http
.post(Uri.encodeFull(url),正文:json.encode({
“新时代阅读”:“650”,
“设备编号”:“34665”,
“新燃油表读数”:“650”
}),标题:{“接受”:“application/json”});
打印(响应.正文);
}
@凌驾
小部件构建(构建上下文){
归还新脚手架(
正文:新中心(
孩子:新升起的按钮(
子项:新文本(“提出请求”),
onPressed:makeRequest,
)));
}
}
有人能告诉我如何克服这个错误吗

我面临的错误是这样的

I/颤振(5881):不支持的介质类型


抱歉,代码太乱了,它没有复制粘贴到每个井上。

您必须将
内容类型添加到标题中,将其值设置为
application/json

通过指定
Accept
您的意思是您的客户机能够理解该响应类型,而不是您的请求内容属于
JSON
类型

基本上你说的是“嘿,我能理解JSON,所以你可以把它发送给我,我会接受的”,但你不是说“嘿,我要给你发送JSON,做好准备!”


为了更好地理解,您可以找到有关
Accept
Content-type

的更多信息,您正在使用不完整的头来发送json负载。这就是服务器不接受您请求的原因

请改用以下标题:

headers: {
        "content-type" : "application/json",
        "accept" : "application/json",
      },

使用以下命令发送Json并接受Json:-

    Future<String> addData(Map<String, dynamic> request) async {
    final url = 'http_url';
    try {
      final response = await http.post(url,
          headers: {
        "content-type" : "application/json",
        "accept" : "application/json",
      },
      body: jsonEncode(request));
      final responseData = jsonDecode(response.body) as Map<String,dynamic>;
      return responseData['message'];
    } catch (error) {
      throw error;
    }
  }
Future addData(映射请求)异步{
最终url='http_url';
试一试{
最终响应=等待http.post(url,
标题:{
“内容类型”:“应用程序/json”,
“接受”:“应用程序/json”,
},
正文:JSONECODE(请求));
最终响应data=jsonDecode(response.body)作为映射;
返回响应数据['message'];
}捕获(错误){
投掷误差;
}
}

请显示包含您请求的响应(标题和正文)的屏幕截图。你可以用邮递员或类似的方法来完成。我在问题中添加了标题/状态码/正文回复屏幕截图。你正在发布
text/html
内容吗?很高兴听到这个消息:)编码快乐!