参考来源:https://blog.51cto.com/zhaojie/1209816
使用XUI框架:https://github.com/xuexiangjys/XUI
xml文件:增加确认按钮,点击后图片开始上传。
<com.xuexiang.xui.widget.alpha.XUIAlphaButton android:id="@+id/button_info" style="@style/Button.Primary.wrap" android:layout_marginTop="10dip" android:text="@string/pick_up" />
XUI中已经封装好,可以获得图片的地址,在ImageSelectGridAdapter.java文件定义方法,用数组接图片的地址。
在PictureSelectorFragment.java文件中监听按钮
//region 图片上传 @OnClick({R.id.button_info}) public void upLoad(View v) { ImageSelectGridAdapter a2=(ImageSelectGridAdapter)recyclerView.getAdapter(); List<LocalMedia> mList =a2.getItemList(); for(int i=0;i<mList.size();i++) { try { LocalMedia jo=mList.get(i); String srcUrl=jo.getCompressPath(); String fileName=srcUrl.substring(srcUrl.lastIndexOf("/")+1); FileInputStream fis = new FileInputStream(srcUrl); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int count = 0; while((count = fis.read(buffer)) >= 0){ baos.write(buffer, 0, count); } String uploadBuffer = new String(Base64.encode(baos.toByteArray())); //进行Base64编码 fis.close(); Thread thread_picture=new Thread(new Runnable() { @Override public void run() { res1l = connectWebService(fileName, uploadBuffer);//接收service返回值 } }); thread_picture.start(); thread_picture.join(); if(res1l.equals("ok")) { ActivityUtils.startActivity(MainActivity.class); }else { throw new Exception(); } }catch (Exception e){ e.printStackTrace(); } } } private String connectWebService( String fileName, String p_w_picpathBuffer) { String SOAP_ACTION="http://tempuri.org/uploadImage"; String NAMESPACE="http://tempuri.org/";//命名空间 String METHOD_NAME = "uploadImage"; String URL="http://192.168.2.120:80/WebService/Upload.asmx";//具体路径 // 第1步:创建SoapObject对象,并指定WebService的命名空间和调用的方法名 SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); // 第2步:设置WebService方法的参数 request.addProperty("filename", fileName); //参数1 图片名 request.addProperty("p_w_picpath", p_w_picpathBuffer); //参数2 图片字符串 // 第3步:创建SoapSerializationEnvelope对象,并指定WebService的版本 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12); // 设置bodyOut属性 envelope.bodyOut = request; // 设置是否调用的是dotNet开发的WebService envelope.dotNet = true; envelope.setOutputSoapObject(request); try { // 第4步:创建HttpTransportSE对象,并指定URL HttpTransportSE transportSE=new HttpTransportSE(URL); // 第5步:调用WebService transportSE.call(SOAP_ACTION,envelope); //Object result = envelope.getResponse(); //return result.toString(); SoapObject result=(SoapObject )envelope.bodyIn; //获取到返回的结果,并强制转换成SoapObject对象 String test=result.getProperty(0).toString();//该对象中还嵌套了一个SoapObject对象,需要使用getProperty(0)把这个对象提取出来 return test; }catch (Exception e){ e.printStackTrace(); Log.e("", Log.getStackTraceString(e)); return Log.getStackTraceString(e); } } //endregion
WebService: