Sample code for 30+ languages & platforms
Java Requires Chilkat v11.0.0+

Azure File Service: List Shares

See more Azure Cloud Storage Examples

Sample code to list the file shares in an Azure storage account.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.AuthAzureStorage;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.DateTime;
import com.chilkatsoft.chilkat2.DtObj;
import com.chilkatsoft.chilkat2.Rest;
import com.chilkatsoft.chilkat2.Xml;

public class ChilkatExample {

    public static void main(String[] args) {
        // Azure File Service Example: List all the file shares in a storage account.
        // See also: https://docs.microsoft.com/en-us/rest/api/storageservices/list-shares

        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Rest rest = new Rest();

        // Connect to the Azure Storage Blob Service
        boolean bTls = true;
        int port = 443;
        boolean bAutoReconnect = true;
        // In this example, the storage account name is "chilkat".
        try {
            rest.connect("chilkat.file.core.windows.net", port, bTls, bAutoReconnect);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Provide Azure Cloud credentials for the REST call.
        AuthAzureStorage azAuth = new AuthAzureStorage();
        azAuth.setAccessKey("AZURE_ACCESS_KEY");
        // The account name used here should match the 1st part of the domain passed in the call to Connect (above).
        azAuth.setAccount("chilkat");
        azAuth.setScheme("SharedKey");
        azAuth.setService("File");
        // This causes the "x-ms-version: 2021-08-06" header to be automatically added.
        azAuth.setXMsVersion("2021-08-06");
        rest.setAuthAzureStorage(azAuth);

        // Note: The application does not need to explicitly set the following
        // headers: x-ms-date, Authorization.  These headers
        // are automatically set by Chilkat.

        // Send the GET request to list the shares.
        String responseStr;
        try {
            responseStr = rest.fullRequestNoBody("GET", "/?comp=list");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // When successful, the Azure Storage service will respond with a 200 response status code,
        // with an XML response body.

        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 (if any): " + responseStr);
            System.out.println("---");
            System.out.println("LastRequestStartLine: " + rest.getLastRequestStartLine());
            System.out.println("LastRequestHeader: " + rest.getLastRequestHeader());
            return;
        }

        // Load the XML response for parsing.
        // An example of the response XML is shown below.
        Xml xml = new Xml();
        xml.loadXml(responseStr);

        System.out.println(xml.getXml());

        // Here's a sample response:

        // <?xml version="1.0" encoding="utf-8" ?>
        // <EnumerationResults ServiceEndpoint="https://chilkat.file.core.windows.net/">
        //     <Shares>
        //         <Share>
        //             <Name>beardie</Name>
        //             <Properties>
        //                 <Last-Modified>Mon, 26 Jun 2017 21:24:57 GMT</Last-Modified>
        //                 <Etag>"0x8D4BCD9CBD872E5"</Etag>
        //                 <Quota>5120</Quota>
        //             </Properties>
        //         </Share>
        //         <Share>
        //             <Name>pip</Name>
        //             <Properties>
        //                 <Last-Modified>Mon, 26 Jun 2017 21:24:44 GMT</Last-Modified>
        //                 <Etag>"0x8D4BCD9C3D823D1"</Etag>
        //                 <Quota>5120</Quota>
        //             </Properties>
        //         </Share>
        //     </Shares>
        //     <NextMarker />
        // </EnumerationResults>

        // Let's iterate over the file shares
        DateTime lastMod = new DateTime();

        int numShares = xml.numChildrenAt("Shares");
        int i = 0;
        DtObj dt = new DtObj();
        while (i < numShares) {
            System.out.println("---- Share " + i + " ----");
            xml.setI(i);
            System.out.println("Name: " + xml.getChildContent("Shares|Share[i]|Name"));
            lastMod.setFromRfc822(xml.getChildContent("Shares|Share[i]|Properties|Last-Modified"));
            lastMod.toDtObj(true, dt);

            System.out.println("Last-Modified YMD: " + dt.getYear() + "," + dt.getMonth() + "," + dt.getDay());
            i = i + 1;
        }

        // Output for the above loop:

        // ---- Share 0 ----
        // Name: beardie
        // Last-Modified YMD: 2017,6,26
        // ---- Share 1 ----
        // Name: pip
        // Last-Modified YMD: 2017,6,26
        //

        System.out.println("Success.");
    }
}