參考來源: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: