web-services - 如何在 Flutter 中使用 FedEx Web Services
问题描述
我正在开发一个应用程序来使用颤振跟踪联邦快递包裹。我应该在哪里将 FedEx Web 服务 WSDL 集成到我的代码中,以便我可以将我的跟踪请求发送到 FedEx 并获得回复?
目前我正在使用另一个 api 进行测试,并且能够通过直接向该 api 的 url 发送请求来获得响应。但是 FedEx 网络服务不能那样工作,我必须使用他们的 WSDL 来设置 url。
Beer.fromJSON(Map<String, dynamic> jsonMap) :
id = jsonMap['id'],
name = jsonMap['name'],
tagline = jsonMap['tagline'],
description = jsonMap['description'],
image_url = jsonMap['image_url'];
}
Future<Stream<Beer>> getBeers() async {
final String url = 'https://api.punkapi.com/v2/beers';
final client = new http.Client();
final streamedRest = await client.send(
http.Request('get', Uri.parse(url))
);
return streamedRest.stream
.transform(utf8.decoder)
.transform(json.decoder)
.expand((data) => (data as List))
.map((data) => Beer.fromJSON(data));
}
解决方案
WSDL 不是您导入应用程序的东西,或者至少不是通过 dart 导入的。它描述了可以向其服务器支持的各种端点发出的请求。
Fedex 的文档比我能解释得更好:
根据服务的 WSDL 定义生成对服务的 SOAP 请求或来自服务的响应。
WSDL 是一个 XML 文档,它提供有关服务功能、可用方法、它们的参数和参数类型的信息。它描述了如何与服务通信以生成对服务的请求或解密来自服务的响应。
WSDL 的目的是向客户端完整地描述 Web 服务。WSDL 通常定义服务可用的位置以及用于与服务通信的通信协议。它定义了编写与 XML Web 服务一起工作的程序所需的一切。
很有可能端点实际上使用 SOAP 进行通信,而 dart 目前并不完全支持。您将不得不使用dart:xml之类的东西来生成与 WSDL 中的描述相匹配的请求,然后您可以使用 http.Client 发送它们,就像您为其他 API 所做的那样。
推荐阅读
- microsoft-graph-api - 使用图表更新数据需要很长时间
- javascript - 将“nomodule”属性动态添加到
- google-analytics - BigQuery 和 GA:某些电子商务指标(例如产品收入)未正确分配给产品列表名称
- node.js - 检测 NodeJS 上的屏幕触摸
- javascript - 正则表达式获取全字电子邮件
- ruby-on-rails - 如何修改这个数组?
- python - "import xhtml2pdf" 在 Google AppEngine 标准环境下突然停止工作
- java - 无法验证 AlertDialog 的 setPositiveButton 下的 EditText
- java - 大斐波那契数快速算法的最后一位
- javascript - 将javascript添加到wordpress的“正确”方法是什么?