21.06.2011, 17:35 | #1 |
Участник
|
Не могу разобраться с Web-сервисами :(
Господа, выручайте.
И CRM-ом и Web-сервисами занимаюсь ровно неделю Надо разобраться как эти веб сервисы работают При попытке использовать CrmService напрямую возвращает ошибку 401 Скармливаю post-ом вот такой XML <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'> <soap:Header> <CrmAuthenticationToken xmlns="http://schemas.microsoft.com/crm/2007/WebServices"> <AuthenticationType xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes"> 0 </AuthenticationType> <OrganizationName xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes"> AdventureWorksCycle </OrganizationName> <CallerId xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes"> 00000000-0000-0000-0000-000000000000 </CallerId> </CrmAuthenticationToken> </soap:Header> <soap:Body> <Create xmlns='http://schemas.microsoft.com/crm/2007/WebServices'> <entity xsi:type='lead'> <subject>Интерес с сайта: Тест сервиса</subject> <companyname>Тестовая компания</companyname> <lastname>Иванов</lastname> <emailaddress1>test@mail.ru</emailaddress1> <telephone1>6782637</telephone1> <jobtitle>Директор</jobtitle> <description>Интерес для тестовых целей, не обращать внимания</description> </entity> </Create> </soap:Body> </soap:Envelope> создал его по документации ответ - 401 пускаю через curl с использованием NTLM аутентификации пробовал разобраться через CrmDiscoveryService Загнал ему такой XML <?xml version="1.0" encoding="iso-8859-1"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Execute xmlns="http://schemas.microsoft.com/crm/2007/CrmDiscoveryService"> <Request> <RetrieveCrmTicketRequest /> </Request> </Execute> </soap:Body> </soap:Envelope> что находится в теге реквест без разницы на все ответ один <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><faultcode>soap:Client</faultcode><faultstring>Server was unable to process request.</faultstring><detail><error> <code>0x80040216</code> <description>An unexpected error occurred.</description> <type>Platform</type> </error></detail></soap:Fault></soap:Body></soap:Envelope> попытался на сервере трейс включить как тут описано http://support.microsoft.com/kb/907490/en ноль реакции никаких файлов в директории не создается в общем тыкаюсь как слепой котенок, направьте хоть куда копать? в моей конкторе спецов по этому делу нет (я сам в веб технологиях только в теории что то где то а так по базам данных всю жизнь, а тут подписали меня с этим заниматься ) |
|
21.06.2011, 18:19 | #2 |
Участник
|
А CRM-то какой? 4.0 или 2011?
__________________
Опыт позволяет ошибаться гораздо увереннее. |
|
21.06.2011, 18:26 | #3 |
Участник
|
|
|
21.06.2011, 22:16 | #4 |
Moderator
|
Приведите код, пожалуйста.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
22.06.2011, 10:03 | #5 |
Участник
|
Кода как такового нет
через curl скармливаю XML сервисе вот такой командой c:\curl>curl --ntlm --user admin:123 --header "Content-Type: text/xml" --data-as cii @passorg.xml -v http://192.168.0.2/MSCRMServices/200...scoveryService .asmx --output test.txt passorg.xml имеет следующее содержимое <?xml version="1.0" encoding="iso-8859-1"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Execute xmlns="http://schemas.microsoft.com/crm/2007/CrmDiscoveryService"> <Request> <RetrieveCrmTicketRequest /> </Request> </Execute> </soap:Body> </soap:Envelope> |
|
22.06.2011, 11:10 | #6 |
Moderator
|
Затейливо! Какую задачу вам предстоит решать и какими средствами? Интересуют язык и платформа. Дело в том, что я бы рекомендовал вам тестировать код и использовать более высокоуровневые реализации работы с веб сервисами.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
22.06.2011, 14:13 | #7 |
Участник
|
Цитата:
есть веб форма, с нее заполняются данные, на основании этих данных создается новый интерес моя задача родить XML запрос, который это сделает, затем уже его передадут разработчикам, которые это все водрузят на сайт я вообще не разработчик есичо (ну вообщето специализируюсь на БД и общей архитектуре, т.е. до сего момента знаний "веб сервисы кормятся XML-ями и работают в гетерогенных средах" мне было за глаза, а тут такая задача) с наскоку скормить Create crmservice не получилось я так понял для начала надо получить токен, который надо пихать в хидер для получения этого токена надо вызвать <RetrieveCrmTicketRequest /> при попытке вызвать получаем вот такой результат |
|
22.06.2011, 15:09 | #8 |
Moderator
|
Вообще этот токен нужен в основном для получение тикета при работе с IFD и Live внедрениями. В вашем случае - NTLM авторизация он не нужен. Попробуйте воспользоваться решением http://www.stunnware.com/crm2/topic....=jswebservice2. Для этого нужно знать C#. Суть решения в том, что вы строите нужные вам запросы при помощи объектной модели CRM, запускаете программу и она выдает как должен выглядеть SOAP запрос.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
22.06.2011, 15:22 | #9 |
Moderator
|
И да, кстати, при определенных сетевых настройках 401 бывает если обращаться к сервису по IP или доменному имени. Не уверен, что curl использует какие-то API Windows, но чем черт не шутит - попробуйте по имени машины к сервису обратиться. Еще можно поиграть настройками прокси и интрасети в IE и добавить узел CRM в доверенные или зону интрасети.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
22.06.2011, 15:46 | #10 |
Участник
|
Цитата:
Сообщение от Артем Enot Грунин
И да, кстати, при определенных сетевых настройках 401 бывает если обращаться к сервису по IP или доменному имени. Не уверен, что curl использует какие-то API Windows, но чем черт не шутит - попробуйте по имени машины к сервису обратиться. Еще можно поиграть настройками прокси и интрасети в IE и добавить узел CRM в доверенные или зону интрасети.
с C# все очень и очень плохо - я его совсем не знаю |
|
22.06.2011, 16:41 | #11 |
Moderator
|
Linux? Знаете, бы тогда попытался, для начала, убедиться удается ли авторизоваться в CRM с веб сайта, а уже потом запрос отлаживал.
Еще мысль: HTML при помощи curl удается прочитать? Или тоже 401?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
22.06.2011, 18:15 | #12 |
Участник
|
|
|
22.06.2011, 22:58 | #13 |
Moderator
|
Вдвойне странно... Пока догадок больше нет. Стандартная установка? Тонкой настройкой не занимались? Пользователь под которым читаете данные есть в CRM?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
23.06.2011, 09:47 | #14 |
Участник
|
Цитата:
никакой настройки нет ни тонкой никакой (я этот CRM первый раз в жизни месяц назад увидел) пользователь есть естественно, если нет ругань идет на гораздо более раннем этапе (короче этот момент исключил сразу) блин ниужели никто никогда такого не далал? проблема явно какая то принципиальная, так как в наличии и на сервере установленном только что и на боевом точно такая же картина пытался искать что то по настройке Web сервисов - тишина все примеры исключительно на C# или VB или JScript изредка Java но нигде нет никакого примера где можно тупо скормить XML и получить ответ, хоть блин хеллоу ворлд какой нить |
|
23.06.2011, 10:30 | #15 |
Moderator
|
Ну, гайд у вас сомнительный! Тем не менее, мне кажется что установка у вас рабочая. Принципиальная проблема заключается в средствах которые вы используете. Нет ничего удивительного в том, что для Web системы разработки Microsoft все примеры делаются на технологиях Microsoft. Откуда взять XML - вообще не важно - хоть из сокета его читайте. Проблема в том КАК вы эти данные передаете.
Например, я не вижу в вашем "коде" хидеров запроса: "SOAPAction" = "http://schemas.microsoft.com/crm/2007/WebServices/ имя вызываемого веб метода" "Content-Type" = "text/xml; charset=utf-8" "Content-Length" = длинна вашего XML И нигде не вижу, чтобы запрос выполнялся по методу POST, хотя это, вероятно скрыто в какой-то из инструкции curl. Возможно есть еще какие-то моменты. Мы все делали подобные вещи, но из JavaScript (на худой конец отлаживайтесь так!) или при помощи готовых библиотек MS.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
Теги |
web сервис, crm4 |
|
|