trans.setUserAgent("lmc", null);
	public LmcSoapResponse invoke(String targetURL)		throws LmcSoapClientException, IOException, SoapFaultException,			   ServiceException, SoapParseException     {		LmcSoapResponse result = null;		SoapHttpTransport trans = null;		try {			trans = new SoapHttpTransport(targetURL);			trans.setTimeout(sTimeoutMillis);            trans.setRetryCount(sRetryCount);			// set the auth token and session id in the transport for this request to use            String curSessionID = null;			if (mSession != null) {				trans.setAuthToken(mSession.getAuthToken());                curSessionID = mSession.getSessionID();				trans.setSessionId(curSessionID);			}            // send it over			Element requestXML = getRequestXML();            if (sDumpXML) {            	sLog.info("Request:" + DomUtil.toString(requestXML, true));            }            com.zimbra.soap.Element requestElt = com.zimbra.soap.Element.convertDOM(requestXML);			//System.out.println("Sending over request " + DomUtil.toString(requestXML, true));			Element responseXML = trans.invoke(requestElt).toXML();            if (sDumpXML) {                sLog.info("Response:" + DomUtil.toString(responseXML, true) + "\n");            }                        /*             * check to see if the session ID changed.  this will not change              * the session ID if there was one and trans.getSessionId() now             * returns null.             */            String newSessionID = trans.getSessionId();            if (newSessionID != null && mSession != null) {                if (curSessionID == null)                    mSession.setSessionID(newSessionID);                else if (!curSessionID.equals(newSessionID))                	mSession.setSessionID(newSessionID);            }                            // parse the response            //System.out.println(DomUtil.toString(responseXML, true));			result = parseResponseXML(responseXML);		} finally {			if (trans != null)				trans.shutdown();		}		return result;	}