首页 > 解决方案 > 如何在 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));
}

标签: web-servicesflutterfedex

解决方案


WSDL 不是您导入应用程序的东西,或者至少不是通过 dart 导入的。它描述了可以向其服务器支持的各种端点发出的请求。

Fedex 的文档比我能解释得更好:

根据服务的 WSDL 定义生成对服务的 SOAP 请求或来自服务的响应。

WSDL 是一个 XML 文档,它提供有关服务功能、可用方法、它们的参数和参数类型的信息。它描述了如何与服务通信以生成对服务的请求或解密来自服务的响应。

WSDL 的目的是向客户端完整地描述 Web 服务。WSDL 通常定义服务可用的位置以及用于与服务通信的通信协议。它定义了编写与 XML Web 服务一起工作的程序所需的一切。

很有可能端点实际上使用 SOAP 进行通信,而 dart 目前并不完全支持。您将不得不使用dart:xml之类的东西来生成与 WSDL 中的描述相匹配的请求,然后您可以使用 http.Client 发送它们,就像您为其他 API 所做的那样。


推荐阅读