Sample code for 30+ languages & platforms
Java

MWS SubmitFeed (Amazon Marketplace Web Service)

See more HTTP Misc Examples

Uploads a feed for processing by Amazon MWS.

See Amazon MWS SubmitFeed for the Amazon MWS SubmitFeed reference documentation.

Important: The Chilkat v9.5.0.75 release accidentally breaks Amazon MWS (not AWS) authentication. If you need MWS with 9.5.0.75, send email to support@chilkatsoft.com for a hotfix, or revert back to v9.5.0.73, or update to a version after 9.5.0.75.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Crypt2;
import com.chilkatsoft.chilkat2.Rest;
import com.chilkatsoft.chilkat2.StringBuilder;
import com.chilkatsoft.chilkat2.Xml;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        // This example will send an XML file in the HTTP request body.
        // First we'll construct the XML, then we'll compute the MD5 digest which needs to be added as a query param..

        // Construct the following XML.   (This is just a sample XML body..)

        // <AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        //     xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
        //   <Header>
        //     <DocumentVersion>1.01</DocumentVersion>
        //     <MerchantIdentifier>M_EXAMPLE_123456</MerchantIdentifier>
        //   </Header>
        //   <MessageType>Product</MessageType>
        //   <PurgeAndReplace>false</PurgeAndReplace>
        //   <Message>
        //     <MessageID>1</MessageID>
        //     <OperationType>Update</OperationType>
        //     <Product>
        //       <SKU>56789</SKU>
        //       <StandardProductID>
        //         <Type>ASIN</Type>
        //         <Value>B0EXAMPLEG</Value>
        //       </StandardProductID>
        //       <ProductTaxCode>A_GEN_NOTAX</ProductTaxCode>
        //       <DescriptionData>
        //         <Title>Example Product Title</Title>
        //         <Brand>Example Product Brand</Brand>
        //         <Description>This is an example product description.</Description>
        //         <BulletPoint>Example Bullet Point 1</BulletPoint>
        //         <BulletPoint>Example Bullet Point 2</BulletPoint>
        //         <MSRP currency="USD">25.19</MSRP>
        //         <Manufacturer>Example Product Manufacturer</Manufacturer>
        //         <ItemType>example-item-type</ItemType>
        //       </DescriptionData>
        //       <ProductData>
        //         <Health>
        //           <ProductType>
        //             <HealthMisc>
        //               <Ingredients>Example Ingredients</Ingredients>
        //               <Directions>Example Directions</Directions>
        //             </HealthMisc>
        //           </ProductType>
        //         </Health>
        //       </ProductData>
        //     </Product>
        //   </Message>
        // </AmazonEnvelope>

        // This code was generated by pasting the above XML into the online tool at http://tools.chilkat.io/xmlCreate.cshtml
        Xml xml = new Xml();
        xml.setTag("AmazonEnvelope");
        xml.addAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
        xml.addAttribute("xsi:noNamespaceSchemaLocation", "amzn-envelope.xsd");
        xml.updateChildContent("Header|DocumentVersion", "1.01");
        xml.updateChildContent("Header|MerchantIdentifier", "M_EXAMPLE_123456");
        xml.updateChildContent("MessageType", "Product");
        xml.updateChildContent("PurgeAndReplace", "false");
        xml.updateChildContent("Message|MessageID", "1");
        xml.updateChildContent("Message|OperationType", "Update");
        xml.updateChildContent("Message|Product|SKU", "56789");
        xml.updateChildContent("Message|Product|StandardProductID|Type", "ASIN");
        xml.updateChildContent("Message|Product|StandardProductID|Value", "B0EXAMPLEG");
        xml.updateChildContent("Message|Product|ProductTaxCode", "A_GEN_NOTAX");
        xml.updateChildContent("Message|Product|DescriptionData|Title", "Example Product Title");
        xml.updateChildContent("Message|Product|DescriptionData|Brand", "Example Product Brand");
        xml.updateChildContent("Message|Product|DescriptionData|Description", "This is an example product description.");
        xml.updateChildContent("Message|Product|DescriptionData|BulletPoint", "Example Bullet Point 1");
        xml.updateChildContent("Message|Product|DescriptionData|BulletPoint[1]", "Example Bullet Point 2");
        xml.updateAttrAt("Message|Product|DescriptionData|MSRP", true, "currency", "USD");
        xml.updateChildContent("Message|Product|DescriptionData|MSRP", "25.19");
        xml.updateChildContent("Message|Product|DescriptionData|Manufacturer", "Example Product Manufacturer");
        xml.updateChildContent("Message|Product|DescriptionData|ItemType", "example-item-type");
        xml.updateChildContent("Message|Product|ProductData|Health|ProductType|HealthMisc|Ingredients", "Example Ingredients");
        xml.updateChildContent("Message|Product|ProductData|Health|ProductType|HealthMisc|Directions", "Example Directions");

        // Get the XML in the most compact form for the feed submission.
        StringBuilder sbXml = new StringBuilder();
        xml.setEmitCompact(true);
        xml.getXmlSb(sbXml);

        // Get the MD5 hash..
        Crypt2 crypt = new Crypt2();
        crypt.setHashAlgorithm("md5");
        String contentMd5Value = crypt.hashStringENC(sbXml.getAsString());

        Rest rest = new Rest();

        // Connect to the Amazon MWS REST server.
        //
        // Make sure to connect to the correct Amazon MWS Endpoing, otherwise
        // you'll get an HTTP 401 response code.
        //
        // The possible servers are:
        //
        // North America (NA)     https://mws.amazonservices.com
        // Europe (EU)     https://mws-eu.amazonservices.com
        // India (IN)     https://mws.amazonservices.in
        // China (CN)     https://mws.amazonservices.com.cn
        // Japan (JP)     https://mws.amazonservices.jp
        //
        boolean bTls = true;
        int port = 443;
        boolean bAutoReconnect = true;
        rest.connect("mws.amazonservices.com", port, bTls, bAutoReconnect);

        rest.setHost("mws.amazonservices.com");

        rest.addQueryParam("AWSAccessKeyId", "0PB842ExampleN4ZTR2");
        rest.addQueryParam("Action", "SubmitFeed");
        rest.addQueryParam("FeedType", "_POST_PRODUCT_DATA_");
        rest.addQueryParam("MWSAuthToken", "amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE");
        rest.addQueryParam("MarketplaceId.Id.1", "ATVExampleDER");
        rest.addQueryParam("SellerId", "A1XExample5E6");
        rest.addQueryParam("ContentMD5Value", contentMd5Value);
        rest.addQueryParam("SignatureMethod", "HmacSHA256");
        rest.addQueryParam("SignatureVersion", "2");
        rest.addQueryParam("Version", "2009-01-01");

        // Add the MWS Signature param.  (Also adds the Timestamp parameter using the curent system date/time.)
        rest.addMwsSignature("POST", "/Feeds/2009-01-01", "mws.amazonservices.com", "MWS_SECRET_ACCESS_KEY_ID");

        rest.addHeader("Content-Type", "text/xml");
        String responseXml;
        try {
            responseXml = rest.fullRequestString("POST", "/Feeds/2009-01-01", sbXml.getAsString());
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        if (rest.getResponseStatusCode() != 200) {
            // Examine the request/response to see what happened.
            System.out.println("response status code = " + rest.getResponseStatusCode());
            System.out.println("response status text = " + rest.getResponseStatusText());
            System.out.println("response header: " + rest.getResponseHeader());
            System.out.println("response body: " + responseXml);
            System.out.println("---");
            System.out.println("LastRequestStartLine: " + rest.getLastRequestStartLine());
            System.out.println("LastRequestHeader: " + rest.getLastRequestHeader());
        }

        // Examine the XML returned in the response body.
        System.out.println(responseXml);
        System.out.println("----");
        System.out.println("Success.");
    }
}