无法使用Java和Axis2在Dynamics CRM中创建新事件

无法使用Java和Axis2在Dynamics CRM中创建新事件,java,axis2,dynamics-crm,crm,dynamics-crm-4,Java,Axis2,Dynamics Crm,Crm,Dynamics Crm 4,所以我一直在努力解决这个问题,奇怪的是,当我在一台机器上运行它时,我得到了一个通用的轴故障,没有任何描述,但现在在另一台机器上,我得到了一个不同的错误消息,但我仍然卡住了。基本上,我只是想通过一个web服务调用在Microsoft Dynamics CRM 4.0中创建一个新事件,这是一个相当简单的任务 我首先从下载XML并使用Axis2从中生成代码。无论如何,这是我的计划,任何帮助都将不胜感激,因为我在这方面的时间比我想象的要长,我真的没有主意了 public class TestCR

所以我一直在努力解决这个问题,奇怪的是,当我在一台机器上运行它时,我得到了一个通用的轴故障,没有任何描述,但现在在另一台机器上,我得到了一个不同的错误消息,但我仍然卡住了。基本上,我只是想通过一个web服务调用在Microsoft Dynamics CRM 4.0中创建一个新事件,这是一个相当简单的任务

我首先从下载XML并使用Axis2从中生成代码。无论如何,这是我的计划,任何帮助都将不胜感激,因为我在这方面的时间比我想象的要长,我真的没有主意了

    public class TestCRM {  

    private static String endpointURL = "http://theHost/MSCrmServices/2007/CrmService.asmx";  
    private static String userName = "myUserNameHere";  
    private static String password = "myPasswordHere";  
    private static String host = "theHostname";  
    private static int port = 80;  
    private static String domain = "theDomain";
    private static String orgName = "theOrganization";

    public static void main(String[] args) {  

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

            RetrieveMultipleDocument rmd = RetrieveMultipleDocument.Factory.newInstance();  
            com.microsoft.schemas.crm._2007.webservices.RetrieveMultipleDocument.RetrieveMultiple rm = com.microsoft.schemas.crm._2007.webservices.RetrieveMultipleDocument.RetrieveMultiple.Factory.newInstance();

            QueryExpression query = QueryExpression.Factory.newInstance();  
            query.setColumnSet(AllColumns.Factory.newInstance());  
            query.setEntityName(EntityName.INCIDENT.toString());    

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

            TargetCreateIncident tinc = TargetCreateIncident.Factory.newInstance();
            Incident inc = tinc.addNewIncident();
            inc.setDescription("This is a test of ticket creation through a web services call.");

            CreateDocument cd = CreateDocument.Factory.newInstance();
            Create create = Create.Factory.newInstance();
            create.setEntity(inc);

            cd.setCreate(create);

            Incident test = (Incident)cd.getCreate().getEntity();

            CrmAuthenticationTokenDocument catd = CrmAuthenticationTokenDocument.Factory.newInstance();  
            CrmAuthenticationToken token = CrmAuthenticationToken.Factory.newInstance(); 
            token.setAuthenticationType(0);     
            token.setOrganizationName(orgName);  
            catd.setCrmAuthenticationToken(token);          

            //The two printlns below spit back XML that looks okay to me?
            System.out.println(cd); 
            System.out.println(catd);
            /* stuff that doesn't work */   
            CreateResponseDocument crd = stub.create(cd, catd, null, null); //this line throws the error
            CreateResponse cr = crd.getCreateResponse();
            System.out.println("create result: " + cr.getCreateResult());
            /* End stuff that doesn't work */

            System.out.println();
            System.out.println();
            System.out.println();
            boolean fetchNext = true;  
            while(fetchNext){  
                RetrieveMultipleResponseDocument rmrd = stub.retrieveMultiple(rmd,  catd, null, null);
                //This retrieve using the CRMAuthenticationToken catd works just fine

                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...  
                    Incident myEntity = (Incident) myEntitiesAtLast[i];  
                    System.out.println("["+(i+1)+"]: " + myEntity);
                }  
            }  
        }   
        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);  
        options.setProperty(HTTPConstants.AUTHENTICATE, auth);  
        options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, "true");  
    }
}
公共类TestCRM{
私有静态字符串endpointURL=”http://theHost/MSCrmServices/2007/CrmService.asmx";  
私有静态字符串userName=“myUserNameHere”;
私有静态字符串password=“myPasswordHere”;
私有静态字符串host=“theHostname”;
专用静态int端口=80;
私有静态字符串domain=“theDomain”;
私有静态字符串orgName=“theOrganization”;
公共静态void main(字符串[]args){
CrmServiceStub;
试试{
存根=新的CrmServiceStub(endpointURL);
setOptions(stub.\u getServiceClient().getOptions());
RetrieveMultipleDocument rmd=RetrieveMultipleDocument.Factory.newInstance();
com.microsoft.schemas.crm._2007.webservices.RetrieveMultipleDocument.retrievemultiplerm=com.microsoft.schemas.crm._2007.webservices.RetrieveMultipleDocument.RetrieveMultiple.Factory.newInstance();
QueryExpression query=QueryExpression.Factory.newInstance();
query.setColumnSet(AllColumns.Factory.newInstance());
query.setEntityName(EntityName.INCIDENT.toString());
rm.setQuery(查询);
rmd.setRetrieveMultiple(rm);
TargetCreateIncident tinc=TargetCreateIncident.Factory.newInstance();
事件公司=tinc.addNewIncident();
inc.setDescription(“这是通过web服务调用创建票证的测试。”);
CreateDocument cd=CreateDocument.Factory.newInstance();
Create=Create.Factory.newInstance();
创建setEntity(inc);
cd.setCreate(create);
事件测试=(事件)cd.getCreate().getEntity();
CrmAuthenticationTokenDocument catd=CrmAuthenticationTokenDocument.Factory.newInstance();
CrmAuthenticationToken=CrmAuthenticationToken.Factory.newInstance();
token.setAuthenticationType(0);
token.setOrganizationName(orgName);
catd.setCrmAuthenticationToken(令牌);
//下面的两个println吐回XML,我觉得还可以吗?
系统输出打印项次(cd);
系统输出打印LN(catd);
/*不起作用的东西*/
CreateResponseDocument crd=stub.create(cd,catd,null,null);//此行抛出错误
CreateResponse cr=crd.getCreateResponse();
System.out.println(“创建结果:+cr.getCreateResult());
/*结束不起作用的东西*/
System.out.println();
System.out.println();
System.out.println();
布尔fetchNext=true;
while(fetchNext){
RetrieveMultipleResponseDocument rmrd=存根。retrieveMultiple(rmd,catd,null,null);
//使用CRMAuthenticationToken catd进行检索工作正常
RetrieveMultipleResponse rmr=rmrd.getRetrieveMultipleResponse();
BusinessEntityCollection bec=rmr.getRetrieveMultipleResult();
String pagingCookie=bec.getPagingCookie();
fetchNext=bec.getMoreRecords();
ArrayOfBusiness实体aobe=bec.getBusinessEntities();
BusinessEntity[]myEntitiesAtLast=aobe.getBusinessEntityArray();

对于(int i=0;i我能够让它工作,只需要添加一个父帐户。

我能够让它工作,只需要添加一个父帐户。

我很高兴你能做到这一点。当CRM抛出异常时,首先要检查的是CRM跟踪日志。CRM提供了一个非常好的错误描述。这有助于缩小错误范围我们的调查相当困难

有关在服务器上启用跟踪的详细信息:

我很高兴您能做到这一点。当CRM引发异常时,首先要检查的是CRM跟踪日志。CRM提供了一个非常好的错误描述。这有助于大大缩小您的调查范围

有关在服务器上启用跟踪的详细信息:

您是否实施了MS CRM。我在遵循此处提供的参考资料时遇到问题。您能否帮助通过java实施CRM您是否实施了MS CRM。我在遵循此处提供的参考资料时遇到问题。您能否帮助通过java实施CRM
org.apache.axis2.AxisFault: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'S' (code 83) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:123)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:67)
    at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:354)
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
    at com.spanlink.crm.dynamics4.webservice.CrmServiceStub.create(CrmServiceStub.java:618)
    at com.spanlink.crm.dynamics4.runtime.TestCRM.main(TestCRM.java:82)
Caused by: org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'S' (code 83) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:260)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope(StAXSOAPModelBuilder.java:161)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSOAPModelBuilder.java:110)
    at org.apache.axis2.builder.BuilderUtil.getSOAPBuilder(BuilderUtil.java:682)
    at org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:215)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:145)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:108)
    ... 7 more
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'S' (code 83) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]
    at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:623)
    at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2047)
    at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
    at javax.xml.stream.util.StreamReaderDelegate.next(StreamReaderDelegate.java:60)
    at org.apache.axiom.om.impl.builder.SafeXMLStreamReader.next(SafeXMLStreamReader.java:183)
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:597)
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:172)
    ... 13 more