Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 致命异常:上载图像时出现空指针异常_Java_Android_Eclipse_Nullpointerexception_Android Async Http - Fatal编程技术网

Java 致命异常:上载图像时出现空指针异常

Java 致命异常:上载图像时出现空指针异常,java,android,eclipse,nullpointerexception,android-async-http,Java,Android,Eclipse,Nullpointerexception,Android Async Http,我在类DriverDetails中定义了以下方法。 每当我设置映像时,都会得到这些NullPointerException。有人能指导我完成这件事吗 08-25 13:10:28.156: E/AndroidRuntime(6890): FATAL EXCEPTION: main 08-25 13:10:28.156: E/AndroidRuntime(6890): java.lang.NullPointerException 08-25 13:10:28.156: E/AndroidRunti

我在类DriverDetails中定义了以下方法。 每当我设置映像时,都会得到这些NullPointerException。有人能指导我完成这件事吗

08-25 13:10:28.156: E/AndroidRuntime(6890): FATAL EXCEPTION: main
08-25 13:10:28.156: E/AndroidRuntime(6890): java.lang.NullPointerException
08-25 13:10:28.156: E/AndroidRuntime(6890):     at in.veho.vehodriver.DriverDetails.setCarImage(DriverDetails.java:692)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at in.veho.vehodriver.DriverDetails.access$5(DriverDetails.java:683)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at in.veho.vehodriver.DriverDetails$UploadCarImageTask.onPostExecute(DriverDetails.java:632)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at in.veho.vehodriver.DriverDetails$UploadCarImageTask.onPostExecute(DriverDetails.java:1)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at android.os.AsyncTask.finish(AsyncTask.java:631)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at android.os.Looper.loop(Looper.java:137)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at android.app.ActivityThread.main(ActivityThread.java:5227)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at java.lang.reflect.Method.invokeNative(Native Method)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at java.lang.reflect.Method.invoke(Method.java:511)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
08-25 13:10:28.156: E/AndroidRuntime(6890):     at dalvik.system.NativeStart.main(Native Method)
==============================================================================

private void setDriverImage(String pValue) {

    byte[] decodeString;
    try {

    Gson gson = new GsonBuilder().create();
        Content content = gson.fromJson(pValue, Content.class);
         String imageData = content.imagedata;
         imageData = imageData.substring(imageData.indexOf(",") + 1);
        decodeString = Base64.decode(imageData);

        if (decodeString != null && decodeString.length > 0) {
            mDriverImageBitmap = BitmapFactory.decodeByteArray(
                    decodeString, 0, decodeString.length);
            byte[] lImage = TextUtilis.getBytes(mDriverImageBitmap);
            TukxiCache.saveDataToDisk(Constants.UPDATED_DRIVER_IMAGE_TAG,
                    DriverDetails.this, true);
            TukxiCache.saveDataToDisk(Constants.DRIVER_IMAGE_TAG,
                    DriverDetails.this, lImage);
            mDriverImageField.setImageBitmap(mDriverImageBitmap);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
public class UploadCarImageTask extends AsyncTask<Bitmap, Void, String> {

    @Override
    protected void onPreExecute() {
        showCustomDialogs(PROGRESS_DIALOG);

    }

    @Override
    protected String doInBackground(Bitmap... params) {
        if (!NetworkUtility.isNetworkConnected(DriverDetails.this)) {
            return getString(R.string.internet_fail);
        }

        String lResponse = TukxiDriverServerUtils.uploadCarImage(
                DriverDetails.this, params[0], mUserInfo.getPhoneNumber(),
                filePath); //here i m made change from file path to uri of the image
        if (lResponse != null) {
            return lResponse;
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        dismissCustomDialogs(PROGRESS_DIALOG);
        if (TextUtils.isEmpty(result)) {

            DialogUtility.getOKDialog(DriverDetails.this, null,
                    getString(R.string.image_uploaded_successfully_text),
                    null).show();
            setCarImage(result);
            mUploadedCarImage = true;
            updateContinueBtn();

        } else {
            DialogUtility.getOKDialog(DriverDetails.this, null,
                    getString(R.string.image_uploaded_failed_text), null)
                    .show();
        }               
    }
}
public class Content 
{
     @SerializedName("imagedata")
     public String imagedata;
}
public static String uploadCarImage(Context pContext, Bitmap pBitmap,
        String pPhoneNumber, String filePath) {

    String type = "carphoto";
    int SDK_INT = android.os.Build.VERSION.SDK_INT;
    if (SDK_INT > Build.VERSION_CODES.FROYO) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }

    // Making HTTP request
    try {

        // new url for new API
        String result;

        String Upload_Image_Url = Constants.main_url + Constants.driver_url
                + "/" + pPhoneNumber + Constants.driver_photo_upload_url
                + "/" + type;
        Log.i("Upload_Image_Url", Upload_Image_Url);

        HttpClient client = new DefaultHttpClient();

        HttpPost post = new HttpPost(Upload_Image_Url);

        MultipartEntity entity = new MultipartEntity();
        entity.addPart("type", new StringBody(type));
        entity.addPart("phone", new StringBody(pPhoneNumber));
        entity.addPart("image", new FileBody(new File(filePath),
                "image/jpg"));


        post.setEntity(entity);
        Log.i("MimeTypeMap",MimeTypeMap.getFileExtensionFromUrl(filePath).toString());

        HttpResponse response = client.execute(post);
        //Log.i("car image response server",response.toString());
        HttpEntity httpEntity = response.getEntity();

        // receive response as inputStream
        //InputStream inputStream = null;
        InputStream inputStream = httpEntity.getContent();
        TukxiDriverParsers.uploadPhotoResponse(pContext, inputStream);

    } catch (Exception e) {
        Constants.printLog("Upload Photo response ", "exception occured "
                + e.getMessage());
        return e.getMessage();
    }
    return null;
}
public static String uploadPhotoResponse(Context pContext, InputStream lResponse) throws Exception {
    BufferedReader reader = new BufferedReader(new InputStreamReader(lResponse, "iso-8859-1"), 8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
    }
    lResponse.close();
    String response = sb.toString();
    Constants.printLog("uploadPhotoResponse ", ""+response);
    return null;
}
==========================================================================

private void setDriverImage(String pValue) {

    byte[] decodeString;
    try {

    Gson gson = new GsonBuilder().create();
        Content content = gson.fromJson(pValue, Content.class);
         String imageData = content.imagedata;
         imageData = imageData.substring(imageData.indexOf(",") + 1);
        decodeString = Base64.decode(imageData);

        if (decodeString != null && decodeString.length > 0) {
            mDriverImageBitmap = BitmapFactory.decodeByteArray(
                    decodeString, 0, decodeString.length);
            byte[] lImage = TextUtilis.getBytes(mDriverImageBitmap);
            TukxiCache.saveDataToDisk(Constants.UPDATED_DRIVER_IMAGE_TAG,
                    DriverDetails.this, true);
            TukxiCache.saveDataToDisk(Constants.DRIVER_IMAGE_TAG,
                    DriverDetails.this, lImage);
            mDriverImageField.setImageBitmap(mDriverImageBitmap);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
public class UploadCarImageTask extends AsyncTask<Bitmap, Void, String> {

    @Override
    protected void onPreExecute() {
        showCustomDialogs(PROGRESS_DIALOG);

    }

    @Override
    protected String doInBackground(Bitmap... params) {
        if (!NetworkUtility.isNetworkConnected(DriverDetails.this)) {
            return getString(R.string.internet_fail);
        }

        String lResponse = TukxiDriverServerUtils.uploadCarImage(
                DriverDetails.this, params[0], mUserInfo.getPhoneNumber(),
                filePath); //here i m made change from file path to uri of the image
        if (lResponse != null) {
            return lResponse;
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        dismissCustomDialogs(PROGRESS_DIALOG);
        if (TextUtils.isEmpty(result)) {

            DialogUtility.getOKDialog(DriverDetails.this, null,
                    getString(R.string.image_uploaded_successfully_text),
                    null).show();
            setCarImage(result);
            mUploadedCarImage = true;
            updateContinueBtn();

        } else {
            DialogUtility.getOKDialog(DriverDetails.this, null,
                    getString(R.string.image_uploaded_failed_text), null)
                    .show();
        }               
    }
}
public class Content 
{
     @SerializedName("imagedata")
     public String imagedata;
}
public static String uploadCarImage(Context pContext, Bitmap pBitmap,
        String pPhoneNumber, String filePath) {

    String type = "carphoto";
    int SDK_INT = android.os.Build.VERSION.SDK_INT;
    if (SDK_INT > Build.VERSION_CODES.FROYO) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }

    // Making HTTP request
    try {

        // new url for new API
        String result;

        String Upload_Image_Url = Constants.main_url + Constants.driver_url
                + "/" + pPhoneNumber + Constants.driver_photo_upload_url
                + "/" + type;
        Log.i("Upload_Image_Url", Upload_Image_Url);

        HttpClient client = new DefaultHttpClient();

        HttpPost post = new HttpPost(Upload_Image_Url);

        MultipartEntity entity = new MultipartEntity();
        entity.addPart("type", new StringBody(type));
        entity.addPart("phone", new StringBody(pPhoneNumber));
        entity.addPart("image", new FileBody(new File(filePath),
                "image/jpg"));


        post.setEntity(entity);
        Log.i("MimeTypeMap",MimeTypeMap.getFileExtensionFromUrl(filePath).toString());

        HttpResponse response = client.execute(post);
        //Log.i("car image response server",response.toString());
        HttpEntity httpEntity = response.getEntity();

        // receive response as inputStream
        //InputStream inputStream = null;
        InputStream inputStream = httpEntity.getContent();
        TukxiDriverParsers.uploadPhotoResponse(pContext, inputStream);

    } catch (Exception e) {
        Constants.printLog("Upload Photo response ", "exception occured "
                + e.getMessage());
        return e.getMessage();
    }
    return null;
}
public static String uploadPhotoResponse(Context pContext, InputStream lResponse) throws Exception {
    BufferedReader reader = new BufferedReader(new InputStreamReader(lResponse, "iso-8859-1"), 8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
    }
    lResponse.close();
    String response = sb.toString();
    Constants.printLog("uploadPhotoResponse ", ""+response);
    return null;
}
==========================================================

private void setDriverImage(String pValue) {

    byte[] decodeString;
    try {

    Gson gson = new GsonBuilder().create();
        Content content = gson.fromJson(pValue, Content.class);
         String imageData = content.imagedata;
         imageData = imageData.substring(imageData.indexOf(",") + 1);
        decodeString = Base64.decode(imageData);

        if (decodeString != null && decodeString.length > 0) {
            mDriverImageBitmap = BitmapFactory.decodeByteArray(
                    decodeString, 0, decodeString.length);
            byte[] lImage = TextUtilis.getBytes(mDriverImageBitmap);
            TukxiCache.saveDataToDisk(Constants.UPDATED_DRIVER_IMAGE_TAG,
                    DriverDetails.this, true);
            TukxiCache.saveDataToDisk(Constants.DRIVER_IMAGE_TAG,
                    DriverDetails.this, lImage);
            mDriverImageField.setImageBitmap(mDriverImageBitmap);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
public class UploadCarImageTask extends AsyncTask<Bitmap, Void, String> {

    @Override
    protected void onPreExecute() {
        showCustomDialogs(PROGRESS_DIALOG);

    }

    @Override
    protected String doInBackground(Bitmap... params) {
        if (!NetworkUtility.isNetworkConnected(DriverDetails.this)) {
            return getString(R.string.internet_fail);
        }

        String lResponse = TukxiDriverServerUtils.uploadCarImage(
                DriverDetails.this, params[0], mUserInfo.getPhoneNumber(),
                filePath); //here i m made change from file path to uri of the image
        if (lResponse != null) {
            return lResponse;
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        dismissCustomDialogs(PROGRESS_DIALOG);
        if (TextUtils.isEmpty(result)) {

            DialogUtility.getOKDialog(DriverDetails.this, null,
                    getString(R.string.image_uploaded_successfully_text),
                    null).show();
            setCarImage(result);
            mUploadedCarImage = true;
            updateContinueBtn();

        } else {
            DialogUtility.getOKDialog(DriverDetails.this, null,
                    getString(R.string.image_uploaded_failed_text), null)
                    .show();
        }               
    }
}
public class Content 
{
     @SerializedName("imagedata")
     public String imagedata;
}
public static String uploadCarImage(Context pContext, Bitmap pBitmap,
        String pPhoneNumber, String filePath) {

    String type = "carphoto";
    int SDK_INT = android.os.Build.VERSION.SDK_INT;
    if (SDK_INT > Build.VERSION_CODES.FROYO) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }

    // Making HTTP request
    try {

        // new url for new API
        String result;

        String Upload_Image_Url = Constants.main_url + Constants.driver_url
                + "/" + pPhoneNumber + Constants.driver_photo_upload_url
                + "/" + type;
        Log.i("Upload_Image_Url", Upload_Image_Url);

        HttpClient client = new DefaultHttpClient();

        HttpPost post = new HttpPost(Upload_Image_Url);

        MultipartEntity entity = new MultipartEntity();
        entity.addPart("type", new StringBody(type));
        entity.addPart("phone", new StringBody(pPhoneNumber));
        entity.addPart("image", new FileBody(new File(filePath),
                "image/jpg"));


        post.setEntity(entity);
        Log.i("MimeTypeMap",MimeTypeMap.getFileExtensionFromUrl(filePath).toString());

        HttpResponse response = client.execute(post);
        //Log.i("car image response server",response.toString());
        HttpEntity httpEntity = response.getEntity();

        // receive response as inputStream
        //InputStream inputStream = null;
        InputStream inputStream = httpEntity.getContent();
        TukxiDriverParsers.uploadPhotoResponse(pContext, inputStream);

    } catch (Exception e) {
        Constants.printLog("Upload Photo response ", "exception occured "
                + e.getMessage());
        return e.getMessage();
    }
    return null;
}
public static String uploadPhotoResponse(Context pContext, InputStream lResponse) throws Exception {
    BufferedReader reader = new BufferedReader(new InputStreamReader(lResponse, "iso-8859-1"), 8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
    }
    lResponse.close();
    String response = sb.toString();
    Constants.printLog("uploadPhotoResponse ", ""+response);
    return null;
}
============================================================

private void setDriverImage(String pValue) {

    byte[] decodeString;
    try {

    Gson gson = new GsonBuilder().create();
        Content content = gson.fromJson(pValue, Content.class);
         String imageData = content.imagedata;
         imageData = imageData.substring(imageData.indexOf(",") + 1);
        decodeString = Base64.decode(imageData);

        if (decodeString != null && decodeString.length > 0) {
            mDriverImageBitmap = BitmapFactory.decodeByteArray(
                    decodeString, 0, decodeString.length);
            byte[] lImage = TextUtilis.getBytes(mDriverImageBitmap);
            TukxiCache.saveDataToDisk(Constants.UPDATED_DRIVER_IMAGE_TAG,
                    DriverDetails.this, true);
            TukxiCache.saveDataToDisk(Constants.DRIVER_IMAGE_TAG,
                    DriverDetails.this, lImage);
            mDriverImageField.setImageBitmap(mDriverImageBitmap);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
public class UploadCarImageTask extends AsyncTask<Bitmap, Void, String> {

    @Override
    protected void onPreExecute() {
        showCustomDialogs(PROGRESS_DIALOG);

    }

    @Override
    protected String doInBackground(Bitmap... params) {
        if (!NetworkUtility.isNetworkConnected(DriverDetails.this)) {
            return getString(R.string.internet_fail);
        }

        String lResponse = TukxiDriverServerUtils.uploadCarImage(
                DriverDetails.this, params[0], mUserInfo.getPhoneNumber(),
                filePath); //here i m made change from file path to uri of the image
        if (lResponse != null) {
            return lResponse;
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        dismissCustomDialogs(PROGRESS_DIALOG);
        if (TextUtils.isEmpty(result)) {

            DialogUtility.getOKDialog(DriverDetails.this, null,
                    getString(R.string.image_uploaded_successfully_text),
                    null).show();
            setCarImage(result);
            mUploadedCarImage = true;
            updateContinueBtn();

        } else {
            DialogUtility.getOKDialog(DriverDetails.this, null,
                    getString(R.string.image_uploaded_failed_text), null)
                    .show();
        }               
    }
}
public class Content 
{
     @SerializedName("imagedata")
     public String imagedata;
}
public static String uploadCarImage(Context pContext, Bitmap pBitmap,
        String pPhoneNumber, String filePath) {

    String type = "carphoto";
    int SDK_INT = android.os.Build.VERSION.SDK_INT;
    if (SDK_INT > Build.VERSION_CODES.FROYO) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }

    // Making HTTP request
    try {

        // new url for new API
        String result;

        String Upload_Image_Url = Constants.main_url + Constants.driver_url
                + "/" + pPhoneNumber + Constants.driver_photo_upload_url
                + "/" + type;
        Log.i("Upload_Image_Url", Upload_Image_Url);

        HttpClient client = new DefaultHttpClient();

        HttpPost post = new HttpPost(Upload_Image_Url);

        MultipartEntity entity = new MultipartEntity();
        entity.addPart("type", new StringBody(type));
        entity.addPart("phone", new StringBody(pPhoneNumber));
        entity.addPart("image", new FileBody(new File(filePath),
                "image/jpg"));


        post.setEntity(entity);
        Log.i("MimeTypeMap",MimeTypeMap.getFileExtensionFromUrl(filePath).toString());

        HttpResponse response = client.execute(post);
        //Log.i("car image response server",response.toString());
        HttpEntity httpEntity = response.getEntity();

        // receive response as inputStream
        //InputStream inputStream = null;
        InputStream inputStream = httpEntity.getContent();
        TukxiDriverParsers.uploadPhotoResponse(pContext, inputStream);

    } catch (Exception e) {
        Constants.printLog("Upload Photo response ", "exception occured "
                + e.getMessage());
        return e.getMessage();
    }
    return null;
}
public static String uploadPhotoResponse(Context pContext, InputStream lResponse) throws Exception {
    BufferedReader reader = new BufferedReader(new InputStreamReader(lResponse, "iso-8859-1"), 8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
    }
    lResponse.close();
    String response = sb.toString();
    Constants.printLog("uploadPhotoResponse ", ""+response);
    return null;
}
已解决:
解决了这个问题。我在响应中返回空值。为了得到正确的结果,我修正了这个问题

您正在从uploadCarImage方法返回null。 查看try-catch块后面的行


此外,您的uploadPhotoResponse总是返回null。

将Getter/Setter添加到Content.java

 public class Content 
{
 @SerializedName("imagedata")
 public String imagedata;

 public string getImagedata(){
     return imagedata;
 }
 public void setImagedata(String imageData){
        imagedata = imageData;
 }

}
在setDriverImageString pValue中

     String imageData = content.imagedata; //use content.getImagedata(); instead

     imageData = imageData.substring(imageData.indexOf(",") + 1);
     decodeString = Base64.decode(imageData);
供参考,请查收


希望它能起作用。快乐编码:

Paste DriverDetails.java:692 lineString imageData=content.imageData;然后,您的内容为空。我已记录imageData的值并显示该值。请尝试设置调试点。检查在反序列化时是否输入了正确的json,但问题是,由于存在所有这些问题,图像会上载到服务器,但会立即崩溃。因此,返回响应不是作为null返回,而是有效吗?@Sanjog Shrestha这是因为在try-catch块内的uploadCarImage方法中,在所有这些“null”值之前上载图像。修复了该问题。我在@kaustuv提到的响应中返回空值。谢谢你!干杯!在上下文中不需要Getter Setter,因为我正在使用gson库并从中进行解析。无论如何,谢谢你的努力!需要getter和setter,因为gson库只映射到它。此外,我还添加了一些链接供参考。能否在setDriverImagepValue中提供一些示例pValue。