Android ksoap調(diào)用webservice批量上傳多張圖片詳解
Android ksoap調(diào)用webservice批量上傳多張圖片詳解
這幾天一直在開發(fā)app,哎呀,什么都是第一接觸,想想自己自學(xué)Java,然后自學(xué)Android,一直沒有放棄,曾想放棄的,但是想到爸媽供我上學(xué),不能在宿舍里面玩游戲,加入學(xué)校實(shí)驗(yàn)室,一天沒課就來著里學(xué)習(xí),當(dāng)然這里也有志同道合的人,一起努力一起進(jìn)步!雖然大學(xué)這幾年都在努力的學(xué)習(xí)技術(shù),也沒有參加什么活動(dòng)的,更別說找個(gè)女伴了!還是老老實(shí)實(shí)的敲代碼,成功給我?guī)砭薮蟮臐撃埽录夹g(shù)總是吸引著我。自己做項(xiàng)目,哎呀!好像說偏題了,言歸正傳吧!前幾天我們說了Android怎么通過webservice上傳圖片到指定服務(wù)器上面,然而這遠(yuǎn)遠(yuǎn)不能滿足需求,于是我就像怎么上傳多張圖片呀,想來想去,我就上網(wǎng)看了看,哎,都沒有什么具體的代碼,都是你抄我的,我抄你的,也許這就是中國(guó)人的習(xí)慣,自己不去驗(yàn)證代碼的正確性就拿過來,真是誤人子弟呀。
于是我一定要寫著一片博文來彌補(bǔ)這個(gè)悲傷的空缺,讓Android開發(fā)者不在感到苦惱,讓小伙伴們都找到信心。
下面就看我一步一步的寫法吧!大家認(rèn)真看,可能方法不是完美,金無足赤嘛,但是肯定是我自己一步一步的寫出來的。
首先,小伙伴們一定要去了解Java的線程池管理類,這個(gè)類比較重要。ExecutorService 點(diǎn)擊打開
這個(gè)老哥講的不錯(cuò),了解ExecutorService之后,你看代碼就比較輕松一點(diǎn)了
下面就是我的代碼實(shí)現(xiàn)了
private ExecutorService executorService;//定義一個(gè)線程池
定義線程池的大小
executorService=Executors.newFixedThreadPool(5);//開啟5個(gè)線程,其實(shí)根據(jù)你的情況,一般不會(huì)超過8個(gè)
線程啟動(dòng)
executorService.execute(new Runnable() {
@Override
public void run() {
getImageromSdk();
}
});
最后就是批量上傳圖片的方法了
public void getImageromSdk(){
Log.i("進(jìn)入獲取圖片方法", "進(jìn)入獲取圖片方法");
try{
String srcUrl = "/sdcard/"; //路徑
String fileName = "1.png"; //文件名
String filrName2="2.jpg";//文件名
List<String>imageList=new ArrayList<>();//定義一個(gè)list,里面裝2個(gè)圖片地址,模擬批量上傳
imageList.add(fileName);
imageList.add(filrName2);
for (int i = 0; i < imageList.size(); i++) {
FileInputStream fis = new FileInputStream(srcUrl + imageList.get(i));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int count = 0;
while((count = fis.read(buffer)) >= 0){
baos.write(buffer, 0, count);
}
String uploadBuffer = new String(Base64.encode(baos.toByteArray(), Base64.DEFAULT)); //進(jìn)行Base64編碼
String methodName = "uploadImage";
getImageFromAndroid(methodName,imageList.get(i), uploadBuffer); //調(diào)用webservice
Log.i("connectWebService", "start");
fis.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
最后就是提交soap方法了,這方法我都寫了幾百遍了
public String getImageFromAndroid(String arg0,String arg1, String arg2){
Log.i("進(jìn)入端口方法", "進(jìn)入端口方法");
final String methodName="getImageFromAndroid";
final String soapAction=AgbcApi.NAMESPACE+methodName;
request = new SoapObject(AgbcApi.NAMESPACE, methodName);
request.addProperty("arg0",arg1);
request.addProperty("arg1",arg2);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
(new MarshalBase64()).register(envelope);
envelope.bodyOut = request;
envelope.dotNet=false;
envelope.setOutputSoapObject(request);
HttpTransportSE ht = new HttpTransportSE(AgbcApi.TASKSERVICEURL);
ht.debug=true;
try {
ht.call(soapAction, envelope);
Log.i("請(qǐng)求", envelope.bodyIn.toString());
} catch (IOException | XmlPullParserException e) {
e.printStackTrace();
}
return arg1;
};
配置類
public class AgbcApi {
/**
* 服務(wù)器ip
*/
private static String IP="http://10.123.42.138:8080/fff";
public static String TASKSERVICEURL=IP+"TaskService";
public static String NAMESPACE="http://iservice.gbc.com/";
}
其實(shí)Android開發(fā)還是很簡(jiǎn)單的只要你刻苦的去敲,多想想開發(fā)思路,多了解開發(fā)api有一天你會(huì)發(fā)現(xiàn)自己很牛逼,哈哈
- 在Android中訪問WebService接口的方法
- Android開發(fā)調(diào)用WebService的方法示例
- Android 中利用 ksoap2 調(diào)用 WebService的示例代碼
- Android 通過webservice上傳多張圖片到指定服務(wù)器詳解
- Android通過ksoap2傳遞復(fù)雜數(shù)據(jù)類型及CXF發(fā)布的webservice詳細(xì)介紹
- 在Android中調(diào)用WebService實(shí)例
- Android通過Webservice操作sqlserver數(shù)據(jù)庫實(shí)例代碼
- android調(diào)用WebService實(shí)例分析
- android中soap協(xié)議使用(ksoap調(diào)用webservice)
- android調(diào)用webservice接口獲取信息
相關(guān)文章
AndroidStudio 實(shí)現(xiàn)加載字體資源的方法
這篇文章主要介紹了AndroidStudio 實(shí)現(xiàn)加載字體資源的方法的相關(guān)資料,這里提供了詳細(xì)的實(shí)現(xiàn)方法,需要的朋友可以參考下2016-11-11
Android圖像切換器imageSwitcher的實(shí)例應(yīng)用
這篇文章主要為大家詳細(xì)介紹了Android圖像切換器imageSwitcher的實(shí)例應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10
Android如何調(diào)整線程調(diào)用棧大小
這篇文章主要介紹了Android如何調(diào)整線程調(diào)用棧大小,幫助大家更好的進(jìn)行Android開發(fā),完善自身程序,感興趣的朋友可以了解下2020-10-10
Android復(fù)選框CheckBox與開關(guān)按鈕Switch及單選按鈕RadioButton使用示例詳解
這篇文章主要介紹了Android復(fù)選框CheckBox與開關(guān)按鈕Switch及單選按鈕RadioButton使用示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09
Android上使用ZXing識(shí)別條形碼與二維碼的方法
這篇文章主要介紹了Android上使用ZXing識(shí)別條形碼與二維碼的方法,需要的朋友可以參考下2014-08-08
ubuntu 12.10 上 android 編譯環(huán)境搭建的深入解析
本篇文章是對(duì)ubuntu 12.10上android 編譯環(huán)境的搭建進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Android利用反射機(jī)制調(diào)用截屏方法和獲取屏幕寬高的方法
這篇文章主要介紹了Android利用反射機(jī)制調(diào)用截屏方法和獲取屏幕寬高的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Android自動(dòng)編輯文本框(AutoCompleteTextView)使用方法詳解
這篇文章主要為大家詳細(xì)介紹了Android自動(dòng)編輯文本框AutoCompleteTextView的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android View滑動(dòng)的實(shí)現(xiàn)分析示例
View滑動(dòng)是Android實(shí)現(xiàn)自定義控件的基礎(chǔ),同時(shí)在開發(fā)中難免會(huì)遇到View的滑動(dòng)處理,其實(shí)不管是那種滑動(dòng)方法,基本思路是類似的;當(dāng)點(diǎn)擊事件傳到View時(shí),系統(tǒng)記下觸摸點(diǎn)的坐標(biāo),手指移動(dòng)時(shí)系統(tǒng)記下移動(dòng)后的左邊并算出偏移量,通過偏移量來修改View的坐標(biāo)2022-08-08

