Biplab Das
Biplab Das

Reputation: 33

Null object reference error on container.createIfNotExists();

I am trying to work with Azure Blob Storage for an Android app by following the below link: http://azure.microsoft.com/en-in/documentation/articles/storage-java-how-to-use-blob-storage/

I am using Android Studio

I am going fine till I get an exception in the line:

container.createIfNotExists();

This line gives the error:

Attempt to invoke interface method 'void com.android.okhttp.internal.http.Transport.writeRequestHeaders(com.android.okhttp.Request)' on a null object reference

Below are my imports:

import com.microsoft.azure.storage.*;
import com.microsoft.azure.storage.blob.*;

The java code:

try{
            System.out.print("Code Progess 2 ");
            CloudStorageAccount account = CloudStorageAccount.parse(storageConnectionString);
            System.out.print("Code Progess 3 ");
            CloudBlobClient serviceClient = account.createCloudBlobClient();
            System.out.print("Code Progess 4 ");

            // Container name must be lower case.
            CloudBlobContainer container = serviceClient.getContainerReference("myimages");
            System.out.print("Code Progess 5 ");
            container.createIfNotExists();
            System.out.print("Code Progess 6 ");

            // Upload an image file.
            CloudBlockBlob blob = container.getBlockBlobReference("image1.jpg");
            System.out.print("Code Progess 7 ");
            File sourceFile = new File("<Path to local image storage>");
            System.out.print("Code Progess 8 ");
            blob.upload(new FileInputStream(sourceFile), sourceFile.length());
            System.out.print("Code Progess 9 ");

            // Download the image file.
            File destinationFile = new File(sourceFile.getParentFile(), "image1Download.tmp");
            System.out.print("Code Progess 10 ");
            blob.downloadToFile(destinationFile.getAbsolutePath());
            System.out.print("Code Progess 11 ");
        }

catch (Exception e) {
            System.out.print("Exception encountered: ");
            System.out.println(e.getMessage());
            System.exit(-1);
        }

The logcat is as below:

01-09 20:54:02.072    2271-2287/com.rollcall.blob W/art﹕ Verification of void com.microsoft.azure.storage.blob.CloudBlobContainer.create(com.microsoft.azure.storage.blob.BlobRequestOptions, com.microsoft.azure.storage.OperationContext) took 334.218ms
01-09 20:54:02.140    2271-2287/com.rollcall.blob W/art﹕ Unresolved exception class when finding catch block: javax.xml.stream.XMLStreamException
01-09 20:54:02.141    2271-2287/com.rollcall.blob I/System.out﹕ Code Progess 1 Code Progess 2 Code Progess 3 Code Progess 4 Code Progess 5 Exception encountered: Attempt to invoke interface method 'void com.android.okhttp.internal.http.Transport.writeRequestHeaders(com.android.okhttp.Request)' on a null object reference

Can anyone tell me where I am going wrong?

Thanks

Upvotes: 2

Views: 1096

Answers (1)

Vinay Shah - Microsoft
Vinay Shah - Microsoft

Reputation: 332

The getting started guide you refer to is specifically for Java. Are you using Java or Android Azure Storage client library for your sample? There is a separate android Azure Storage client library that you should use for building Android applications.

You can look at the readme document on Github repository to get started. Sample code on working with blob can also be found in the repository here

Upvotes: 1

Related Questions