Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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
Android 从图库中选择图像并使用httpPost通过API上传到服务器_Android_Image_Http_Image Uploading - Fatal编程技术网

Android 从图库中选择图像并使用httpPost通过API上传到服务器

Android 从图库中选择图像并使用httpPost通过API上传到服务器,android,image,http,image-uploading,Android,Image,Http,Image Uploading,我正在开发一个android应用程序,我需要从gallery中选择图像并将其上传到服务器。我有URI,并且能够使用getRealPathFromURI获取图像文件的实际路径。当我必须使用httpPost将其上传到API时,问题就开始了(我还需要传递一些参数)。我总是收到nullpointerException。我已经浏览了很多帖子,但似乎无法解决问题。下面是我的代码 @Override public void onActivityResult(int requestCode, int

我正在开发一个android应用程序,我需要从gallery中选择图像并将其上传到服务器。我有URI,并且能够使用getRealPathFromURI获取图像文件的实际路径。当我必须使用httpPost将其上传到API时,问题就开始了(我还需要传递一些参数)。我总是收到nullpointerException。我已经浏览了很多帖子,但似乎无法解决问题。下面是我的代码

@Override
      public void onActivityResult(int requestCode, int resultCode, Intent data) {



      if (resultCode == Activity.RESULT_OK) {
            switch (requestCode) {
              case 1:

                  String action = "update_user_image";
                  HashMap<String, String> user = session.getUserDetails();       
                  String token = user.get(SessionManagement.KEY_TOKEN);


                  List<NameValuePair> params = new ArrayList<NameValuePair>();
                  params.add(new BasicNameValuePair("action", action));
                  String  device_identifier =   android.os.Build.ID; 



                  currImageURI = data.getData();
                  Intent intent = new Intent(this, ProfilePrivateActivity.class);
                  intent.putExtra("imageUri", currImageURI.toString());



                  String selectedImagePath = getRealPathFromURI(currImageURI).toString();

                  try {

                     HttpClient httpClient = new DefaultHttpClient();
                    HttpPost postRequest = new HttpPost(UPLOAD_URL);
                    postRequest.setEntity(new UrlEncodedFormEntity(params));
                    postRequest.addHeader(BasicScheme.authenticate(
                             new UsernamePasswordCredentials(device_identifier, token),"UTF-8", false));

                    bm = BitmapFactory.decodeFile(selectedImagePath);

                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
                    bm.compress(CompressFormat.JPEG, 20, bos);
                    byte[] data2 = bos.toByteArray();

                    ByteArrayBody bab = new ByteArrayBody(data2, selectedImagePath);
                    // File file= new File("/mnt/sdcard/forest.png");
                    // FileBody bin = new FileBody(file);
                    MultipartEntity reqEntity = new MultipartEntity(
                            HttpMultipartMode.BROWSER_COMPATIBLE);
                    reqEntity.addPart("uploaded", bab);
                    //reqEntity.addPart("photoCaption", new StringBody("sfsdfsdf"));
                    postRequest.setEntity(reqEntity);
                    HttpResponse response = httpClient.execute(postRequest);
                    BufferedReader reader = new BufferedReader(new InputStreamReader(
                            response.getEntity().getContent(), "UTF-8"));
                    String sResponse;
                    StringBuilder s = new StringBuilder();

                    while ((sResponse = reader.readLine()) != null) {
                        s = s.append(sResponse);
                    }
                    System.out.println("Response: " + s);







                } catch (Exception e) {
                    e.printStackTrace();
                }


                  startActivity(intent);



                break;
日志如下:

03-15 19:52:54.718: I/ResolverActivity(5574): mcc=234
03-15 19:52:56.428: D/CLIPBOARD(5574): Hide Clipboard dialog at Starting input: finished by someone else... !
03-15 19:52:58.578: D/AndroidRuntime(5574): Shutting down VM
03-15 19:52:58.578: W/dalvikvm(5574): threadid=1: thread exiting with uncaught exception (group=0x40c621f8)
03-15 19:52:58.583: E/AndroidRuntime(5574): FATAL EXCEPTION: main
03-15 19:52:58.583: E/AndroidRuntime(5574): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content:xxxxx (has extras) }} to activity {com.example.threesixty_android/com.example.threesixty_android.MyDialogBox}: java.lang.NullPointerException
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2991)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3034)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.ActivityThread.access$1100(ActivityThread.java:127)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1188)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.os.Looper.loop(Looper.java:137)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.ActivityThread.main(ActivityThread.java:4511)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at java.lang.reflect.Method.invokeNative(Native Method)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at java.lang.reflect.Method.invoke(Method.java:511)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:986)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:753)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at dalvik.system.NativeStart.main(Native Method)
03-15 19:52:58.583: E/AndroidRuntime(5574): Caused by: java.lang.NullPointerException
03-15 19:52:58.583: E/AndroidRuntime(5574):     at com.example.threesixty_android.MyDialogBox.onActivityResult(MyDialogBox.java:156)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.Activity.dispatchActivityResult(Activity.java:4654)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2987)
03-15 19:52:58.583: E/AndroidRuntime(5574):     ... 11 more

您必须将http代码放入线程或异步任务中。您的清单文件中需要INTERNET权限。为什么还要创建意图并启动活动?

您是否已经完成了创建意图所需的web服务?如果是的话,那么在谷歌上搜索一下,你会看到一些博客。这是一个重复的问题。“我一直得到nullpointerException。”-你能提供堆栈跟踪吗?这是@Johannesstaehlin哪一个是MyDialogBox.java第156行?:)-->那里的变量为null,您正试图调用null变量上的方法。哦,明白了。。。我理解问题所在……谢谢@JohannesStaehlin
03-15 19:52:54.718: I/ResolverActivity(5574): mcc=234
03-15 19:52:56.428: D/CLIPBOARD(5574): Hide Clipboard dialog at Starting input: finished by someone else... !
03-15 19:52:58.578: D/AndroidRuntime(5574): Shutting down VM
03-15 19:52:58.578: W/dalvikvm(5574): threadid=1: thread exiting with uncaught exception (group=0x40c621f8)
03-15 19:52:58.583: E/AndroidRuntime(5574): FATAL EXCEPTION: main
03-15 19:52:58.583: E/AndroidRuntime(5574): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content:xxxxx (has extras) }} to activity {com.example.threesixty_android/com.example.threesixty_android.MyDialogBox}: java.lang.NullPointerException
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2991)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3034)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.ActivityThread.access$1100(ActivityThread.java:127)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1188)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.os.Looper.loop(Looper.java:137)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.ActivityThread.main(ActivityThread.java:4511)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at java.lang.reflect.Method.invokeNative(Native Method)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at java.lang.reflect.Method.invoke(Method.java:511)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:986)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:753)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at dalvik.system.NativeStart.main(Native Method)
03-15 19:52:58.583: E/AndroidRuntime(5574): Caused by: java.lang.NullPointerException
03-15 19:52:58.583: E/AndroidRuntime(5574):     at com.example.threesixty_android.MyDialogBox.onActivityResult(MyDialogBox.java:156)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.Activity.dispatchActivityResult(Activity.java:4654)
03-15 19:52:58.583: E/AndroidRuntime(5574):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2987)
03-15 19:52:58.583: E/AndroidRuntime(5574):     ... 11 more