Ошибка использования Soap API из скрипта - PullRequest
1 голос
/ 11 сентября 2011

В настоящее время у меня есть скрипт, который я пытаюсь использовать для доступа к API, который отлично работает в моем браузере (перейдите к http://zulutrade.com/TradeHistoryIndividual.aspx?pid=24508, чтобы увидеть, как он работает, просматривая запросы XHR в инструментах разработчика при изменении номера сделок, видимых в истории сделок).

Мой код выглядит следующим образом:

function getHistory() {

  var wsdl = SoapService.wsdl("http://zulutrade.com/WebServices/Performance.asmx?WSDL");

  var performanceService = wsdl.getService("PerformanceWebService");

  var param = Xml.element("GetProviderTrades", [
              Xml.attribute("xmlns", "http://zulutrade.com/WebServices/Performance.asmx?WSDL"),
              Xml.element("start",["0"]),
              Xml.element("length",["100"]),
              Xml.element("sortBy",["dc"]),
              Xml.element("sortAscending",[false]),
              Xml.element("providerId",["24508"]),
              Xml.element("currencyIds",["[]"]),
              Xml.element("fromDateStr",["1984-04-24"]),
              Xml.element("toDateStr",["2011-09-10"]),
              Xml.element("validTrades",[true]),
              Xml.element("lotSize",["2"])
            ]);

  var result = performanceService.invokeOperation("GetProviderTrades", [param]);

  Logger.log(result);
}

Я скопировал параметры из данных полезной нагрузки, которые я вижу в своем браузере, но получаю следующую ошибку:

Запрос не выполнен для http://zulutrade.com/WebServices/Performance.asmx, возвращен код 500. Ответ сервера: soap: ServerServer не удалось обработать запрос. ---> Произошла ошибка при создании документа XML. ---> <> f__AnonymousTypee`2 [System.Int32, Z.T []] не может быть сериализовано, поскольку у него нет конструктора без параметров. (строка 21)

Может кто-нибудь пролить свет на то, что я делаю неправильно? Нужно ли предоставлять какие-либо данные заголовка (возможно, файл cookie или что-то в этом роде)?

Спасибо!

1 Ответ

1 голос
/ 11 сентября 2011

.NET XmlSerializer требует конструктор без параметров для любого типа, который вы просите его сериализовать / десериализовать, поэтому вы получите этот тип ошибки, если вы используете класс C #, у которого нет конструктора по умолчанию в качестве параметра или возвращаемого значения для .asmx.Веб-сервис.Таким образом, похоже, что может быть проблема в коде веб-службы, а не в вашем JavaScript.

Однако пространство имен XML для элемента GetProviderTrades выглядит неправильно для меня (учитывая http://zulutrade.com/WebServices/Performance.asmx?op=GetProviderTrades),, попробуйте заменить строку:

Xml.attribute("xmlns", "http://zulutrade.com/WebServices/Performance.asmx?WSDL"),

с:

Xml.attribute("xmlns", "ZuluTrade.WebServices"),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...