在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文件。