i need to update customer & vendor in quickbook at once but i got error.
//Here my code
package com.company.product.wsai.qb.ws.endpoint;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ws.server.endpoint.annotation.Endpoint;
import org.springframework.ws.server.endpoint.annotation.PayloadRoot;
import org.springframework.ws.server.endpoint.annotation.RequestPayload;
import org.springframework.ws.server.endpoint.annotation.ResponsePayload;
import com.intuit.developer.SendRequestXML;
import com.intuit.developer.SendRequestXMLResponse;
import com.intuit.quickbooks.CurrencyAdd;
import com.intuit.quickbooks.CurrencyAddRqType;
import com.intuit.quickbooks.CustomerAdd;
import com.intuit.quickbooks.CustomerAddRqType;
import com.intuit.quickbooks.CustomerTypeAdd;
import com.intuit.quickbooks.CustomerTypeAddRqType;
import com.intuit.quickbooks.VendorAdd;
import com.intuit.quickbooks.QBXML;
import com.intuit.quickbooks.QBXMLMsgsRq;
import com.intuit.quickbooks.VendorAddRqType;
import com.company.product.wsai.qb.ws.conf.XmlConfig;
import com.company.product.wsai.qb.ws.util.XmlLogManager;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
@Endpoint
public class SendRequestXMLEndpoint {
// xml logging
private static final String SEND_REQUEST_XML = "sendRequestXML";
private static final String SEND_REQUEST_XML_RESPONSE = "sendRequestXMLResponse";
@Autowired
com.intuit.developer.ObjectFactory wsObjectFactory;
@Autowired
com.intuit.quickbooks.ObjectFactory qbObjectFactory;
@PayloadRoot(localPart = "sendRequestXML", namespace = XmlConfig.QB_WC_NAMESPACE)
@ResponsePayload
public SendRequestXMLResponse sendRequestXML(@RequestPayload SendRequestXML sendRequestXML) {
String sessionTicket = sendRequestXML.getTicket();
String strCompanyFileName = sendRequestXML.getStrCompanyFileName();
// log request
XmlLogManager.logSendRequestXMLEnpoint(sendRequestXML, SEND_REQUEST_XML, sessionTicket);
SendRequestXMLResponse sendRequestXMLResponse = wsObjectFactory.createSendRequestXMLResponse();
//SendRequestXMLResponse sendRequestXMLResponseforCurrency = wsObjectFactory.createSendRequestXMLResponse();
sendRequestXMLResponse.setSendRequestXMLResult(getCustomer());
// log response
XmlLogManager.logSendRequestXMLEnpoint(sendRequestXMLResponse, SEND_REQUEST_XML_RESPONSE, sessionTicket);
return sendRequestXMLResponse;
}
@PayloadRoot(localPart = "sendRequestXML", namespace = XmlConfig.QB_WC_NAMESPACE)
@ResponsePayload
public SendRequestXMLResponse sendRequestXMLforVendor(@RequestPayload SendRequestXML sendRequestXML) {
String sessionTicket = sendRequestXML.getTicket();
String strCompanyFileName = sendRequestXML.getStrCompanyFileName();
// log request
XmlLogManager.logSendRequestXMLEnpoint(sendRequestXML, SEND_REQUEST_XML, sessionTicket);
SendRequestXMLResponse sendRequestXMLResponseforVendor = wsObjectFactory.createSendRequestXMLResponse();
sendRequestXMLResponseforVendor.setSendRequestXMLResult(getVendor());
// log response
XmlLogManager.logSendRequestXMLEnpoint(sendRequestXMLResponseforVendor, SEND_REQUEST_XML_RESPONSE, sessionTicket);
return sendRequestXMLResponseforVendor;
}
private String getCustomer() {
StringWriter stringWriter = new StringWriter();
stringWriter.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
stringWriter.append("<?qbxml version=\"13.0\"?>");
try {
CustomerAdd customerAdd = qbObjectFactory.createCustomerAdd();
customerAdd.setName("ZZhhaarraa");
customerAdd.setFirstName("Zhara");
customerAdd.setLastName("User");
CustomerAddRqType customerAddRqType = qbObjectFactory.createCustomerAddRqType();
customerAddRqType.setCustomerAdd(customerAdd);
customerAddRqType.setRequestID("1");
QBXMLMsgsRq qbxmlMsgsRq = qbObjectFactory.createQBXMLMsgsRq();
qbxmlMsgsRq.setOnError("stopOnError");
qbxmlMsgsRq.getHostQueryRqOrCompanyQueryRqOrAccountAddRq().add(customerAddRqType);
QBXML qbxml = qbObjectFactory.createQBXML();
qbxml.setQBXMLMsgsRq(qbxmlMsgsRq);
JAXBContext jaxbContext = JAXBContext.newInstance(QBXML.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
marshaller.marshal(qbxml, stringWriter);
} catch (JAXBException e) {
e.printStackTrace();
}
return stringWriter.toString();
}
private String getVendor() {
StringWriter stringWriter = new StringWriter();
stringWriter.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
stringWriter.append("<?qbxml version=\"13.0\"?>");
try {
VendorAdd vendorAdd = qbObjectFactory.createVendorAdd();
vendorAdd.setName("TEST4");
vendorAdd.setCompanyName("ABC45 PVT LTD");
vendorAdd.setEmail("yasa67@jkcsworld.com");
vendorAdd.setNotes("Test Description2");
vendorAdd.setFirstName("Miketr");
vendorAdd.setLastName("Da");
VendorAddRqType vendorAddRqType = qbObjectFactory.createVendorAddRqType();
vendorAddRqType.setVendorAdd(vendorAdd);
vendorAddRqType.setRequestID("2");
QBXMLMsgsRq qbxmlMsgsRq = qbObjectFactory.createQBXMLMsgsRq();
qbxmlMsgsRq.setOnError("stopOnError");
qbxmlMsgsRq.getHostQueryRqOrCompanyQueryRqOrCompanyActivityQueryRq().add(vendorAddRqType);
QBXML qbxml = qbObjectFactory.createQBXML();
qbxml.setQBXMLMsgsRq(qbxmlMsgsRq);
JAXBContext jaxbContext = JAXBContext.newInstance(QBXML.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
marshaller.marshal(qbxml, stringWriter);
} catch (JAXBException e) {
e.printStackTrace();
}
return stringWriter.toString();
}
}
//this is my stack trace of error
Version: Not provided by service
Message: Authentication failed
Description: QBWC1012: Authentication failed due to following error message. Client found response content type of 'text/html;charset=utf-8', but expected 'text/xml'.
The request failed with the error message:
Apache Tomcat/7.0.47 - Error report
HTTP Status 500 - Servlet.init() for servlet ws threw exception
type Exception report
message Servlet.init() for servlet ws threw exception
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet.init() for servlet ws threw exception org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) java.lang.Thread.run(Unknown Source)
root cause
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping#0': Initialization of bean failed; nested exception is org.springframework.context.ApplicationContextException: Cannot map endpoint [public com.intuit.developer.SendRequestXMLResponse com.company.product.wsai.qb.ws.endpoint.SendRequestXMLEndpoint.sendRequestXMLforVendor(com.intuit.developer.SendRequestXML)] on registration key [{http://developer.intuit.com/}sendRequestXML]: there's already endpoint [public com.intuit.developer.SendRequestXMLResponse com.company.product.wsai.qb.ws.endpoint.SendRequestXMLEndpoint.sendRequestXML(com.intuit.developer.SendRequestXML)] mapped org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703) org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484) org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) javax.servlet.GenericServlet.init(GenericServlet.java:160) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) java.lang.Thread.run(Unknown Source)
root cause
org.springframework.context.ApplicationContextException: Cannot map endpoint [public com.intuit.developer.SendRequestXMLResponse com.company.product.wsai.qb.ws.endpoint.SendRequestXMLEndpoint.sendRequestXMLforVendor(com.intuit.developer.SendRequestXML)] on registration key [{http://developer.intuit.com/}sendRequestXML]: there's already endpoint [public com.intuit.developer.SendRequestXMLResponse com.company.product.wsai.qb.ws.endpoint.SendRequestXMLEndpoint.sendRequestXML(com.intuit.developer.SendRequestXML)] mapped org.springframework.ws.server.endpoint.mapping.AbstractMethodEndpointMapping.registerEndpoint(AbstractMethodEndpointMapping.java:97) org.springframework.ws.server.endpoint.mapping.AbstractMethodEndpointMapping.registerMethods(AbstractMethodEndpointMapping.java:150) org.springframework.ws.server.endpoint.mapping.AbstractAnnotationMethodEndpointMapping.initApplicationContext(AbstractAnnotationMethodEndpointMapping.java:72) org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:120) org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:74) org.springframework.context.support.ApplicationContextAwareProcessor.invokeAwareInterfaces(ApplicationContextAwareProcessor.java:119) org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:94) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:407) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1545) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703) org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484) org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) javax.servlet.GenericServlet.init(GenericServlet.java:160) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) java.lang.Thread.run(Unknown Source)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.47 logs.