Веб-служба была написана третьей стороной для связи моей PHP CMS с MS Dynamics CRM.Это веб-служба, которую я должен использовать (API-интерфейсы SOAP и REST по умолчанию, поставляемые с Dynamics, не разрешены для использования).У меня возникают трудности при разработке способа передачи записи пары имя / значение в одну из функций веб-службы.
Мы используем nusoap для общения с веб-службой, поскольку у нас больше шансов на «исправление»обработка SOAP, чтобы приятно общаться с кодом MS, чем если бы мы были во власти того, что обеспечивает обработка SOAP PHP.
Я не знаю много о ASP, но рассматриваемая функция определена [приблизительно]например:
public class UserWebservice : System.Web.Services.WebService
{
public DataSet UpdateContactAddress(string ContactId, List<KeyValuePair<string, string>> Address)
{
...
}
}
Я могу передать ContactId, но затем иметь ассоциативный массив адресных частей ('city' => 'My City' и т. д.) для передачи в параметр Address.Я не могу понять, как это сделать.Если бы я знал, какой XML ожидал получить веб-сервис, я мог бы оттуда работать в обратном направлении, но структура мне просто неизвестна.
Разработчик веб-сервиса может только сказать мне, что это «стандарт»"format, что бы это ни значило.
В случае, если это помогает, вот как UpdateContactAddress обрабатывает параметр:
Entity contact = new Entity("contact");
contact.Id = new Guid(ContactId);
foreach (KeyValuePair<string, string> AddressPart in Address)
{
contact[AddressPart.Key] = AddressPart.Value;
}
Если есть лучший тип данных для использования веб-службой дляпримите запись пар имя / значение, тогда я, вероятно, мог бы поспорить, что ее нужно изменить.
Было бы неплохо подумать, что использование WSDL означает, что все это "просто работает", но я принимаю этоне буду (PHP <-> MS: ха-ха!) и собираю элементы вручную в параметрах, передаваемых nusoap (вложив объекты и массивы soap_val по мере необходимости, что работает для простых массивов значений).
Редактировать:
Просто добавить к одному из этих последних моментов об изменении типа данных, если что-то подобное, если предположить, что это синтаксически правильно, будет легче обрабатывать, тогда яМожно согласиться с этим:
KeyValuePair<string, string>[] Address
т.е. простой массив с «числовыми ключами» «пары имя-значение», который, как я понимаю, не так прост, как элемент массива ключ / значение в PHP.Передача простых массивов в веб-службу MS работает для меня, поэтому удаление неизвестных - хороший шаг.Проблема здесь не в отладочной деятельности со стороны MS - они получают данные или не получают, и если они этого не делают, я виноват в том, что не передал их правильно, но нет никаких подсказок, что на самом деле означает «право».Я надеюсь, что кто-то здесь сделал это и заработал, и может указать мне правильное направление.