nusoap отправляет пары ключ / значение в веб-сервис MS - PullRequest
1 голос
/ 07 февраля 2012

Веб-служба была написана третьей стороной для связи моей 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 - они получают данные или не получают, и если они этого не делают, я виноват в том, что не передал их правильно, но нет никаких подсказок, что на самом деле означает «право».Я надеюсь, что кто-то здесь сделал это и заработал, и может указать мне правильное направление.

...