Вопрос по dynamics-crm, web-services, java – Подключение к локальному веб-сервису Microsoft Dynamics CRM с помощью Java?

9

Существуют ли какие-либо онлайн-ресурсы, которые показывают основные шаги для доступа к локальному веб-сервису Microsoft CRM с помощью клиента, написанного на Java?

Какой набор веб-сервисов мне следует использовать?

Я пробовал это с JAXB, но в именовании элементов WSDL есть конфликт, который требует настройки класса. Если я найду правильное исправление, я опубликую его здесь.

Я столкнулся с проблемой Нужна помощь, чтобы исправить ошибку, org.apache.axis2.AxisFault: Транспортная ошибка: 401 Ошибка: не авторизован в org.apache.axis2.transport.http.HTTPSender.handleResponse (HTTPSender.java:296) в org.apache.axis2.transport.http.HTTPSender.sendViaPost (HTTPSender.java:190) в org.apache.axis2.transport.http.HTTPSender.send (HTTPSender.java:75) в org.apache.axis2.transport. http.CommonsHTTPTransportSender.writeMessageWithCommo & # x200C; & # x200B; ns (CommonsHTTPTransportSender.java:364) по адресу org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke (CommonsH200.tx & x200; xt. , Senthil Mg
Реализовали ли вы Ms Dynamics CRM, если да, то вы позволите мне добиться того же. ищу твой ответ. Senthil Mg
@SenthilMg это должен быть новый вопрос. Похоже, учетные данные пользователя неверны. Попробуйте передать то же имя пользователя и пароль, которые вы используете в браузере для доступа к WSDL. Код, показанный в ответе ниже, использует проверку подлинности NTLM. Это тот же метод проверки подлинности в вашей среде? mjn
ответ ниже получаю ошибку выше в RetrieveMultipleResponseDocument rmrd = stub.RetrieveMultiple (rmd, catd, null, null); любая помощь? Senthil Mg
@SenthilMg нет, мы использовали клиент WCF и простой обмен сообщениями на основе файлов. См. Ниже подсказку, что можно использовать Axis 2. mjn

Ваш Ответ

3   ответа
0

доступным в Dynamics CRM SDK. Как сказал Мануэль Фрейхольц, вы должны использовать Axis2.

https://msdn.microsoft.com/en-us/library/jj602979(v=crm.5).aspx

http://blogs.msdn.com/b/dynamics-coe/archive/2013/09/21/integrating-microsoft-dynamics-crm-2011-online-with-java-and-other-non-net-clients. ASPX

Кроме того, вы можете использовать веб-службы RESTFul через интерфейс OData, предлагаемый Dynamics (https://msdn.microsoft.com/en-us/library/gg334279.aspx)

8

у подлинности Active Directory. Хотя я никогда не пытался ссылаться на веб-сервисы Microsoft Dynamics CRM из Java, я уверен, что это возможно, поскольку это стандартные веб-сервисы, и поэтому на них можно ссылаться из Java через SOAP, как и любой другой веб-сервис.

public class TestCRM {  

private static String endpointURL = "http://server:port/MSCrmServices/2007/CrmService.asmx";  
private static String userName = "username";  
private static String password = "password";  
private static String host = "server";  
private static int portport = port;  

//To make sure you are using the correct domain open ie and try to reach the service. The same domain you entered there is needed here  
private static String domain = "DOMAIN";   

private static String orgName = "THIS_IS_REQUIRED"; //this does the work....  


public static void main(String[] args) {  

    CrmServiceStub stub;  
    try {  
        stub = new CrmServiceStub(endpointURL);  
        setOptions(stub._getServiceClient().getOptions());  

        RetrieveMultipleDocument rmd = RetrieveMultipleDocument.Factory.newInstance();  
        RetrieveMultiple rm = RetrieveMultiple.Factory.newInstance();  

        QueryExpression query = QueryExpression.Factory.newInstance();  
        query.setColumnSet(AllColumns.Factory.newInstance());  
        query.setEntityName(EntityName.######.toString());  
        //query.setFilter...  

        rm.setQuery(query);  
        rmd.setRetrieveMultiple(rm);  

        //Now this is required. Without it all i got was 401s errors  
        CrmAuthenticationTokenDocument catd = CrmAuthenticationTokenDocument.Factory.newInstance();  
        CrmAuthenticationToken token = CrmAuthenticationToken.Factory.newInstance();  
        token.setAuthenticationType(0);     
        token.setOrganizationName(orgName);  
        catd.setCrmAuthenticationToken(token);  

        boolean fetchNext = true;  
        while(fetchNext){  
            RetrieveMultipleResponseDocument rmrd = stub.RetrieveMultiple(rmd,  catd, null, null);  
            RetrieveMultipleResponse rmr = rmrd.getRetrieveMultipleResponse();  
            BusinessEntityCollection bec = rmr.getRetrieveMultipleResult();  

            String pagingCookie = bec.getPagingCookie();  
            fetchNext = bec.getMoreRecords();  

            ArrayOfBusinessEntity aobe = bec.getBusinessEntities();  
            BusinessEntity[] myEntitiesAtLast = aobe.getBusinessEntityArray();  

            for(int i=0; i<myEntitiesAtLast.length; i++){  
                //cast to whatever you asked for...  
                ### myEntity = (###) myEntitiesAtLast[i];  
            }  
        }  
    }   
    catch (Exception e) {  
        e.printStackTrace();  
    }  
}  

private static void setOptions(Options options){  
    HttpTransportProperties.Authenticator auth = new HttpTransportProperties.Authenticator();  

    List authSchemes = new ArrayList();  
    authSchemes.add(HttpTransportProperties.Authenticator.NTLM);   
    auth.setAuthSchemes(authSchemes);   

    auth.setUsername(userName);  
    auth.setPassword(password);  
    auth.setHost(host);  
    auth.setPort(port);  
    auth.setDomain(domain);  
    auth.setPreemptiveAuthentication(false); //it doesnt matter...  
    options.setProperty(HTTPConstants.AUTHENTICATE, auth);  
    options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, "true"); //i think this is good.. not required though  
} 
@joe, нужна помощь, чтобы исправить ошибку, org.apache.axis2.AxisFault: ошибка транспорта: 401 Ошибка: не авторизован в org.apache.axis2.transport.http.HTTPSender.handleResponse (HTTPSender.java:296) в org.apache .axis2.transport.http.HTTPSender.sendViaPost (HTTPSender.java:190) в org.apache.axis2.transport.http.HTTPSender.send (HTTPSender.java:75) в org.apache.axis2.transport.http.TommonsSTP .writeMessageWithCommons (CommonsHTTPTransportSender.java:364) в org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke (CommonsHTTPTransportSender.java:208)
@joe - Как будет выглядеть код для подключения к crm 2011? Любая идея?
Этот исходный код выглядит хорошо, почти так же, как пример кода C # (который я успешно использовал). Знаете ли вы, какой инструментарий SOAP сгенерировал классы заглушек служб в Java? mjn
@Joe, я опробовал ваш фрагмент, представленный здесь, но он не дал результатов, не могли бы вы предоставить ваше ценное предложение по реализации CRM.Showing в RetrieveMultipleDocument rmd = RetrieveMultipleDocument.Factory.newInstance ();
xception в теме & quot; main & quot; java.lang.ExceptionInInitializerError at com.microsoft.schemas.crm._2007.webservices.ExecuteDocument $ Execute $ Factory.newInstance (ExecuteDocument.java:70) в javaMSCRM.Login.main (Login.java:44). Причина: java. lang.RuntimeException: Невозможно загрузить SchemaTypeSystem. Не удается загрузить класс с именем schemaorg_apache_xmlbeans.system.s0C7B6541D611A1749D5105A4C55EC974.TypeSystemHolder.

Похожие вопросы