Quantcast
Channel: Forum CRM Deployment
Viewing all articles
Browse latest Browse all 997

Unable to Create New Incidents in Dynamics CRM with Java and Axis2

$
0
0
So I've been working on trying to figure this out, oddly when I ran it one machine I got a generic Axis Fault with no description, but now on another machine I'm getting a different error message, but I'm still stuck. Basically I'm just trying to do what I thought would be a fairly trivial task of creating a new incident in Microsoft Dynamics CRM 4.0 via a web services call.

I started by downloading the XML from http://hostname/MSCrmServices/2007/CrmService.asmx and generating code from it using Axis2. Anyway, here's my program, any help would be greatly appreciated, as I've been stuck on this for way longer than I thought I'd be and I'm really out of ideas here. 

        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");      	}    }


Also, here's the error message I receive:

    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



Viewing all articles
Browse latest Browse all 997

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>