當前位置:編程學習大全網 - 源碼下載 - 如何在Android上用Post提交大量數據?

如何在Android上用Post提交大量數據?

Android上用Post提交大量數據的方法:

在1中實現。安卓

Activity_main.xml部分

& ltrelative layout xmlns:Android = "/apk/RES/Android "

xmlns:tools="/tools "

Android:layout _ width = " match _ parent "

Android:layout _ height = " match _ parent "

工具:上下文= "。MainActivity " >

& lt文本視圖

android:id="@+id/lblPostResult "

Android:layout _ width = " wrap _ content "

Android:layout _ height = " wrap _ content "

Android:layout _ above = " @+id/but post "

Android:layout _ center horizontal = " true "

Android:text= "提交結果"/& gt;

& lt紐扣

android:id="@+id/butPost "

Android:layout _ width = " wrap _ content "

Android:layout _ height = " wrap _ content "

Android:layout _ alignParentBottom = " true "

Android:layout _ center horizontal = " true "

Android:layout _ margin bottom = " 25dp "

Android:text= "提交測試"/& gt;

& lt/relative layout & gt;

//導入部分

導入Android . OS . bundle;

導入Android . app . activity;

導入Android . view . menu;

導入Android . view . view;

導入Android . widget . button;

導入Android . widget . textview;

導入Android . widget . toast;

導入Android . util . log;

導入Java . io . inputstream;

導入Java . util . hashmap;

導入Java . util . map;

導入Java . util . date;

導入Java . text . simple date format;

//公共類主活動擴展活動部分

私人按鈕m _ butPost

m _ but post =(Button)findViewById(r . id . but post);

m_butPost.setOnClickListener(新視圖。OnClickListener() {

公共void onClick(視圖v) {

but post _ OnClick(v);

}

});

//提交測試

私有void butPost_OnClick(視圖v){

//請求參數鍵值對

String strreccssmsg = " SMS test

//提交

RecSmsToPost(strrecsmmsmsg);

OpenToast("提交測試完成");

}

//收到短信後提交。

private void RecSmsToPost(String strrecsmmsmsg){

string strNowDateTime = getNowDateTime(" yyyy-MM-DD | HH:MM:ss ");//當前時間

//參數

地圖& ltString,String & gtparams = new HashMap & ltString,String & gt();

params.put("RECSMSMSG ",strrecsmmsmsg);

//params.put("name ","李四");

//服務器請求路徑

String strUrlPath = "。HttpURLConnection

導入Java . net . URL;

導入Java . io . output stream;

導入Java . io . inputstream;

導入Java . util . map;

導入Java . io . io exception;

導入Java . net . URL encoder;

導入Java . io . bytearrayoutputstream;

公共類HttpUtils {

/*

*功能:向服務器發送Post請求。

* Param: params請求正文內容,編碼格式。

*/

公共靜態字符串submitPostData(String strurl path,Map & ltString,String & gtparams,字符串編碼){

byte[]data = getRequestData(params,encode)。toString()。getBytes();//獲取請求正文

嘗試{

//String URL path = " http://192.168.1.9:80/JJKSms/rec SMS . PHP ";

URL url =新URL(strUrlPath);

HttpURLConnection http urlconnection =(HttpURLConnection)URL . open connection();

httpurlconnection . setconnecttimeout(3000);//設置連接超時

httpurlconnection . setdoinput(true);//打開輸入流從服務器獲取數據。

httpurlconnection . setdoooutput(true);//打開輸出流向服務器提交數據。

httpurl connection . setrequestmethod(" POST ");//設置通過Post提交數據。

httpurlconnection . setuse caches(false);//使用Post模式時不能使用緩存。

//將請求體的類型設置為文本類型。

httpurlconnection . setrequestproperty(" Content-Type "," application/x-www-form-urlencoded ");

//設置請求體的長度。

httpurlconnection . setrequestproperty(" Content-Length ",string . valueof(data . Length));

//獲取輸出流並將數據寫入服務器。

output stream output stream = httpurlconnection . get output stream();

outputStream.write(數據);

int response = httpurlconnection . getresponsecode();//獲取服務器的響應代碼。

if(response == HttpURLConnection。HTTP_OK) {

InputStream inptStream = httpurlconnection . getinputstream();

返回dealResponseResult(inptStream);//處理服務器的響應結果

}

} catch (IOException e) {

//e . printstacktrace();

return "err: " + e.getMessage()。toString();

}

返回“-1”;

}

/*

*功能:封裝請求體信息。

* Param: params請求正文內容,編碼格式。

*/

公共靜態string buffer getrequest data(Map & lt;String,String & gtparams,字符串編碼){

string buffer string buffer = new string buffer();//存儲封裝的請求體信息。

嘗試{

對於(圖。Entry & ltString,String & gtentry : params.entrySet()) {

string buffer . append(entry . getkey())

。追加(" = ")

。append(URL encoder . encode(entry . getvalue(),encode))

。追加(& amp);

}

string buffer . delete charat(string buffer . length()-1);//刪除最後壹個“&”

} catch(異常e) {

e . printstacktrace();

}

返回stringBuffer

}

/*

*函數:處理服務器的響應結果(將輸入流轉換為字符串)

* param:inputstream服務器的響應輸入流。

*/

公共靜態字符串dealResponseResult(InputStream InputStream){

String resultData = null//存儲處理結果

ByteArrayOutputStream ByteArrayOutputStream = new ByteArrayOutputStream();

byte[] data =新字節[1024];

int len = 0;

嘗試{

while((len = inputstream . read(data))!= -1) {

bytearrayoutputstream . write(data,0,len);

}

} catch (IOException e) {

e . printstacktrace();

}

result data = new String(bytearray output stream . tobytearray());

返回resultData

}

}

2.服務器端準備

服務器端,我用的是wamp模式,當然其他模式也可以。用以下內容創建壹個RecSms.php文件:

& lt?服務器端編程語言(Professional Hypertext Preprocessor的縮寫)

require _ once(' Log/Log helper . PHP ');

回聲“妳好”。“帖子

foreach($ _ REQUEST as $ k = & gt;$v){

echo $ k;回聲“-”;

echo $ v;回聲" & lt/br >;;

}

WriteLog('妳好RecSms.php-');

foreach($ _ POST as $ k = & gt;$v){

寫日誌($k .' -'。$ v);

}

foreach($ _ GET as $ k = & gt;$v){

寫日誌($k .' -'。$ v);

}

& gt

將提交的數據寫入Log\Log.php文件。

LogHelper.php是壹個日誌文件,代碼文件如下:

& lt?服務器端編程語言(Professional Hypertext Preprocessor的縮寫)

函數寫日誌($msg){

$fp = fopen("Log\Log.php "," a ");//清空文件後寫入。

中頻(浮點)

{

date_default_timezone_set('亞洲/重慶');

$time=date("H:i:s ",strtotime(" now "));

$flag=fwrite($fp,$time。" ".$味精。" \ r \ n ");

fclose($ FP);

}

}

& gt

所有的代碼都寫好了。

打開wamp,在Android中點擊提交測試,然後將提交的數據寫入Log.php文件。

  • 上一篇:尾盤殺跌意味著什麽?
  • 下一篇:重讀甲午戰爭,中國沒有任何機會贏得甲午戰爭嗎?
  • copyright 2024編程學習大全網