Как использовать веб-службы FedEx во флаттере - PullRequest
1 голос
/ 28 мая 2019

Я разрабатываю приложение для отслеживания пакетов FedEx с использованием флаттера.Где мне интегрировать WSDL веб-службы FedEx в мой код, чтобы я мог отправить свой запрос на отслеживание в FedEx и получить ответ обратно?

В настоящее время я тестирую с другим API и могу получить ответ, отправив запрос напрямую.на URL этого API.Но веб-сервис 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));
}

1 Ответ

1 голос
/ 29 мая 2019

WSDL - это не то, что вы импортируете в свое приложение, или, по крайней мере, не с помощью dart. Он описывает запросы, которые могут быть сделаны к различным конечным точкам, которые поддерживает их сервер.

Документация FedEx объясняет лучше, чем я мог:

Запрос SOAP или ответ от службы генерируется в соответствии с определением WSDL службы.

WSDL - это документ XML, который предоставляет информацию о том, что делает служба, о доступных методах, их параметрах и типах параметров. В нем описывается, как связаться со службой, чтобы сгенерировать запрос или расшифровать ответ от службы.

Цель WSDL - полностью описать клиенту веб-сервис. WSDL обычно определяет, где услуга доступна и какой протокол связи используется для связи со службой. Он определяет все необходимое для написания программы, которая будет работать с веб-сервисом XML.

Существует большая вероятность того, что конечная точка фактически использует SOAP для связи, которую в настоящее время не полностью поддерживает dart. Вам нужно будет использовать что-то вроде dart: xml для генерации запросов, соответствующих описанию в WSDL, а затем вы можете отправлять их с http.Client так же, как вы делали для другой API.

...