如何在Flutter中使用FedEx Web服务

时间:2019-05-28 17:37:42

标签: web-services flutter fedex

我正在开发一个使用flutter跟踪FedEx包裹的应用程序。我应该在哪里将FedEx Web服务WSDL集成到我的代码中,以便可以将跟踪请求发送到FedEx并获得响应?

当前,我正在测试其他api,并能够通过直接将请求发送到此api的URL来获得响应。但是FedEx Web服务无法以这种方式工作,我必须使用其WSDL来设置网址。

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));
}

1 个答案:

答案 0 :(得分:0)

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

Fedex's documentation在解释方面做得比我更好:

  

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

     

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

     

WSDL的目的是向客户端完全描述Web服务。 WSDL通常定义服务在何处可用以及使用哪种通信协议与服务进行对话。它定义了编写可与XML Web服务一起使用的程序所需的一切。

很有可能端点实际上使用SOAP进行通信,而dart目前尚不完全支持SOAP。您将必须使用dart:xml之类的东西来生成与WSDL中的描述相匹配的请求,然后才能使用与其他API相同的方式通过http.Client发送请求。 / p>