【问题标题】:How to post/send XML data instead of JSON in rest API Flutter?如何在rest API Flutter中发布/发送XML数据而不是JSON?
【发布时间】:2020-10-24 22:15:54
【问题描述】:

我想使用 Flutter 在 Rest API 中发送/发布数据。但是我找不到任何关于如何使用 Flutter 发送 XML 文件的解决方案。

I need to send this data in post API 
<?xml version="1.0" encoding="UTF-8"?>
<Request StartDate="2020-07-05" EndDate="2020-07-05" ServiceID="0">
</Request>

下面给出了我尝试使用颤振的代码

  Future<HttpClientResponse> _send() async {
  var builder = new xml.XmlBuilder();
  builder.processing('xml', 'version="1.0" encoding="iso-8859-9"');
  builder.element('Request', nest: () {
      
        builder.attribute('StartDate', '2020-06-02');
        builder.attribute('EndDate', '2020-07-02');
        builder.attribute('ServiceID', '0');     

  });
  var bookshelfXml = builder.build();
  String _uriMsj = bookshelfXml.toString();
  String _uri = "https://my_url";

  var _responseOtp = post(_uri, _uriMsj);
  print("_responseOtp: $_responseOtp");
}


//**POST XML:**

Future<String> post(String _uri, String _message) async {
  HttpClient client = new HttpClient();
  HttpClientRequest request = await client.postUrl(Uri.parse(_uri));
  request.write(_message);
  HttpClientResponse response = await request.close(); 
  StringBuffer _buffer = new StringBuffer();
  await for(String a in await response.transform(utf8.decoder)) {
    _buffer.write(a);
  }
  print("_buffer.toString: ${_buffer.toString()}");
  return _buffer.toString();
}

它会返回这个响应

  _responseOtp: Instance of 'Future<String>'
    I/flutter ( 9755): _buffer.toString: <?xml version="1.0" encoding="UTF-8" 
    standalone="yes"?>
    I/flutter ( 9755): <Response type="service-response">
    I/flutter ( 9755):   <ResponseCode>1020</ResponseCode>
    I/flutter ( 9755):   <ResponseStatus>error</ResponseStatus>
    I/flutter ( 9755):   <ResponseMessage>Requête invalide</ResponseMessage>
    I/flutter ( 9755): </Response>
  • 此数据与邮递员配合得很好

【问题讨论】:

  • 我试过这个,但它返回错误响应
  • 用您尝试过的内容和您看到的错误更新问题。
  • @RichardHeap 已编辑

标签: xml flutter post xml-parsing send


【解决方案1】:

您需要正常调用..只需更改标题即可。

'Content-type' : 'text/xml',

这样打电话

return await http.post(
        fullUrl, 
        body:data, // data is your normal json data as a string, 
        headers: {
          'Content-type' : 'text/xml',
        }
    );

确保使用 async 和 await 以正确获取结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-22
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2020-06-16
    • 1970-01-01
    相关资源
    最近更新 更多