Java tutorial
/* Marketo SOAP API Sample Code Copyright (C) 2016 Marketo, Inc. This software may be modified and distributed under the terms of the MIT license. See the LICENSE file for details. */ import com.marketo.mktows.*; import java.net.URL; import javax.xml.namespace.QName; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Hex; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; public class SyncMObjects { public static void main(String[] args) { try { URL marketoSoapEndPoint = new URL("CHANGE ME" + "?WSDL"); String marketoUserId = "CHANGE ME"; String marketoSecretKey = "CHANGE ME"; QName serviceName = new QName("http://www.marketo.com/mktows/", "MktMktowsApiService"); MktMktowsApiService service = new MktMktowsApiService(marketoSoapEndPoint, serviceName); MktowsPort port = service.getMktowsApiSoapPort(); // Create Signature DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); String text = df.format(new Date()); String requestTimestamp = text.substring(0, 22) + ":" + text.substring(22); String encryptString = requestTimestamp + marketoUserId; SecretKeySpec secretKey = new SecretKeySpec(marketoSecretKey.getBytes(), "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1"); mac.init(secretKey); byte[] rawHmac = mac.doFinal(encryptString.getBytes()); char[] hexChars = Hex.encodeHex(rawHmac); String signature = new String(hexChars); // Set Authentication Header AuthenticationHeader header = new AuthenticationHeader(); header.setMktowsUserId(marketoUserId); header.setRequestTimestamp(requestTimestamp); header.setRequestSignature(signature); // Create Request //////////////////////////////// ParamsSyncMObjects request = prepareUpdateProgramRequest(); // -or- //ParamsSyncMObjects request = prepareCreateOpptyRequest(); // -or- //ParamsSyncMObjects request = prepareCreateOpptyPersonRoleRequest(); //////////////////////////////// SuccessSyncMObjects result = port.syncMObjects(request, header); JAXBContext context = JAXBContext.newInstance(SuccessSyncMObjects.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); m.marshal(result, System.out); } catch (Exception e) { e.printStackTrace(); } } private static ParamsSyncMObjects prepareUpdateProgramRequest() { ParamsSyncMObjects request = new ParamsSyncMObjects(); request.setOperation(SyncOperationEnum.UPDATE); MObject mobj = new MObject(); mobj.setType("Program"); mobj.setId(1970); TypeAttrib typeAttrib = new TypeAttrib(); typeAttrib.setAttrType("Cost"); Attrib attrib = new Attrib(); attrib.setName("Month"); attrib.setValue("2013-06"); Attrib attrib2 = new Attrib(); attrib2.setName("Amount"); attrib2.setValue("2000"); Attrib attrib3 = new Attrib(); attrib3.setName("Id"); attrib3.setValue("153"); ArrayOfAttrib attribList = new ArrayOfAttrib(); attribList.getAttribs().add(attrib); attribList.getAttribs().add(attrib2); attribList.getAttribs().add(attrib3); typeAttrib.setAttrList(attribList); ArrayOfTypeAttrib typeAttribList = new ArrayOfTypeAttrib(); typeAttribList.getTypeAttribs().add(typeAttrib); mobj.setTypeAttribList(typeAttribList); ArrayOfMObject objList = new ArrayOfMObject(); objList.getMObjects().add(mobj); request.setMObjectList(objList); return request; } private static ParamsSyncMObjects prepareCreateOpptyRequest() { ParamsSyncMObjects request = new ParamsSyncMObjects(); request.setOperation(SyncOperationEnum.INSERT); MObject mobj = new MObject(); mobj.setType("Opportunity"); Attrib attrib = new Attrib(); attrib.setName("Name"); attrib.setValue("Q1 2014"); Attrib attrib2 = new Attrib(); attrib2.setName("Amount"); attrib2.setValue("2000"); Attrib attrib3 = new Attrib(); attrib3.setName("Probability"); attrib3.setValue("80%"); ArrayOfAttrib attribList = new ArrayOfAttrib(); attribList.getAttribs().add(attrib); attribList.getAttribs().add(attrib2); attribList.getAttribs().add(attrib3); mobj.setAttribList(attribList); ArrayOfMObject objList = new ArrayOfMObject(); objList.getMObjects().add(mobj); request.setMObjectList(objList); return request; } private static ParamsSyncMObjects prepareCreateOpptyPersonRoleRequest() { ParamsSyncMObjects request = new ParamsSyncMObjects(); request.setOperation(SyncOperationEnum.INSERT); MObject mobj = new MObject(); mobj.setType("OpportunityPersonRole"); Attrib attrib = new Attrib(); attrib.setName("OpportunityId"); attrib.setValue("64"); // Id of the opportunity created earlier Attrib attrib2 = new Attrib(); attrib2.setName("PersonId"); attrib2.setValue("19"); Attrib attrib3 = new Attrib(); attrib3.setName("Role"); attrib3.setValue("Influencer/Champion"); ArrayOfAttrib attribList = new ArrayOfAttrib(); attribList.getAttribs().add(attrib); attribList.getAttribs().add(attrib2); attribList.getAttribs().add(attrib3); mobj.setAttribList(attribList); ArrayOfMObject objList = new ArrayOfMObject(); objList.getMObjects().add(mobj); request.setMObjectList(objList); return request; } }