1、Android開發中如何將手機中的數據向伺服器發送並且儲存在伺服器中的資料庫?
A
2、android 如何把一個資料庫文件提交到伺服器上面去
json就和map的用法一樣,一個JSONObject json=new JSONObject();
json.put("username", username);
json.put("password",password);
用httppclient這個類傳過去,post請求的話代碼比較多就不寫了,我說下get請求比如你的web項目名字是ServletTest,並且你在項目里寫個servlet類名字叫test。那麼沒有綁定域名的情況下url地址應該是http : // +localhost:8080/ ServletTest/test?msg= ( json.toString)。注意括弧內要在代碼實現。 然後在伺服器端收的信息就是{「username」:username , "password": password}格式的數據了。在你的test類裡面doGet(HttpRequest request , HttpResponse respone){
String msg=request.getParameter("msg");//就能得到{「username」:username , "passwor。。。。
然後JSONObject serverjson=new JSONObject(msg);
String name= serverjson.getString("username");
String password=serverjson.getString("password");
這樣就是封裝發送解析的過程
}.
3、android客戶端如何提交表單數據給web伺服器
1.伺服器端的准備
為了完成該實例,我們需要在伺服器端做以下准備工作:
(1)我們需要在MyEclipse中創建一個Web工程,用來模擬伺服器端的Web服務,這里,我將該工程命名為了「myhttp」。
(2)修改該工程的「index.jsp」文件,添加兩個輸入框和一個提交按鈕,作為該Web工程的顯示頁面。運行Tomcat,在瀏覽器中訪問該Web工程,可以看到如圖1所示的界面。
Web工程的顯示頁面
(3)在該Web工程中,創建一個繼承自HttpServlet的LoginAction類,並實現其中的doPost()方法,用來響應圖1所示頁面的用戶操作。具體實現如下:
由上述代碼可以看出,當我們在圖1所示的頁面輸入用戶名「admin」,密碼「123」時,點擊提交按鈕,會得到「Login succeeded!」的提示信息,如圖2所示。若用戶名、密碼錯誤,則會得到「Login failed!」的提示信息。
2.客戶端實現
在Android客戶端,我們需要完成的工作是:以POST方式發送用戶名密碼到上述伺服器,並獲得伺服器的驗證信息。
我們分以下幾個步驟來完成。
2.1 UI界面
在Android工程中,我們需要完成一個簡單的UI界面,用來完成用戶名密碼的輸入、發送POST請求、顯示伺服器的驗證結果,完成後的界面如圖3所示。
在MainActivity中,我們需要獲取兩個EditText控制項的輸入,「提交」按鍵的監聽,以及伺服器驗證結果的TextView內容顯示。具體實現代碼如下:
2.2發送POST請求到伺服器
可以看到上述代碼中,我們調用了HttpUtils類的靜態方法submitPostData()完成了發送POST請求到伺服器,並將該方法的返回值(伺服器的響應結果)顯示在了TextView控制項中。
通過以上的代碼可以看出,在該方法中,其實完成了3件事:
(1)將用戶名密碼封裝成請求體,這是通過調用getRequestData()方法來實現的(後面會講到這個方法的具體實現)。
(2)設置HttpURLConnection對象的各種參數(其實是設置HTTP協議請求體的各項參數),然後通過httpURLConnection.getOutputStream()方法獲得伺服器輸出流outputStream,再使用outputStream.write()方法將請求體內容發送給伺服器。
(3)判斷伺服器的響應碼,通過httpURLConnection.getInputStream()方法獲得伺服器的響應輸入流,然後再調用dealResponseResult()方法處理伺服器的響應結果。
2.3封裝請求體
使用POST請求時,POST的參數不是放在URL字元串里,而是放在HTTP請求數據中,所以我們需要對POST的參數進行封裝。
針對該實例而言,我們發送的URL請求是:http://192.168.1.101:8080/myhttp/servlet/LoginAction,但是我們需要將POST的參數(也就是username和password)封裝到該請求中,形成如下的形式:
2.4處理響應結果
最後,我們再來看一看對伺服器返回結果的處理是怎樣的。因為在本實例中,伺服器的返回結果是字元串「Login succeeded!」或「Login failed!」,所以這里我們需要做的就是將伺服器的返回結果輸入流轉化成字元串。當然了,如果伺服器返回的是圖片,那麼,我們就需要就得到的輸入流轉化成Bitmap圖片了。如下代碼是上面代碼中用到的dealResponseResult()方法的具體實現。
2.5運行效果
4、android客戶端提交的數據怎麼插入到遠程伺服器資料庫
json就和map的用法一樣,new一個JSONObject json=new JSONObject();
json.put("username", username);
json.put("password",password);
用httppclient這個類傳過去,post請求的話代碼比較多就不寫了,我說下get請求比如你的web項目名字是ServletTest,並且你在項目里寫個servlet類名字叫test。那麼沒有綁定域名的情況下url地址應該是http : // +localhost:8080/ ServletTest/test?msg= ( json.toString)。注意括弧內要在代碼實現。 然後在伺服器端收的信息就是{「username」:username , "password": password}格式的數據了。在你的test類裡面doGet(HttpRequest request , HttpResponse respone){
String msg=request.getParameter("msg");//就能得到{「username」:username , "passwor。。。。
然後JSONObject serverjson=new JSONObject(msg);
String name= serverjson.getString("username");
String password=serverjson.getString("password");
這樣就是封裝發送解析的過程
}
5、android程序中如何直接操作遠程伺服器上的資料庫
直接操作是辦不到的,而且這樣很不安全。
有方法達到你想要的效果,具體如下。
建議:在客戶端和服務端之間寫一個自己的通信協議。
比如:客戶端要更改、刪除服務端的數據,就給服務端發送一個報文:「刪除」+表名+條件。
服務端這么接到後,就調用服務端的程序,將接到的報文轉化為sql語句執行即可。
簡單的一個流程就是上面那樣子啦,有點像QQ和QQ伺服器的一個交互過程。
補充:如果樓主對TCP/IP協議比較了解的話,上面的過程可以輕松實現。現實中的應用例子也是這樣,誰也不會讓Client直接操作資料庫的,那無異於自殺。
6、android客戶端怎麼把數據發送到tomcat伺服器,並存入mysql資料庫里?
你編寫一個java web程序 ,web程序能能給Android HTTP 調用, 這種方式是最常用的,很簡單的。
7、求問大神 Android客戶端傳送數據給伺服器,然後servlet把接收的數據存到MySQL資料庫中
數據比較小的話可以通過Http協議,將數據以參數的形式發到伺服器,然後servlet將參數讀出來,存入資料庫,
8、新手求助,Android實現向伺服器發送數據的問
可使用android自帶的httpclient框架實現。
1. GET 方式傳遞參數
//先將參數放入List,再對參數進行編碼
List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "數據")); //增加參數1
params.add(new BasicNameValuePair("param2", "value2"));//增加參數2
String param = URLEncodedUtils.format(params, "UTF-8");//對參數編碼
String baseUrl = "伺服器介面完整URL";
HttpGet getMethod = new HttpGet(baseUrl + "?" + param);//將URL與參數拼接
HttpClient httpClient = new DefaultHttpClient();
try {
HttpResponse response = httpClient.execute(getMethod); //發起GET請求
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //獲取響應碼
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"));//獲取伺服器響應內容
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
2. POST方式 方式傳遞參數
//和GET方式一樣,先將參數放入List
params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "Post方法"));//增加參數1
params.add(new BasicNameValuePair("param2", "第二個參數"));//增加參數2
try {
HttpPost postMethod = new HttpPost(baseUrl);//創建一個post請求
postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //將參數填入POST Entity中
HttpResponse response = httpClient.execute(postMethod); //執行POST方法
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //獲取響應碼
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8")); //獲取響應內容
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
9、Android客戶端向伺服器請求提交數據,提交失敗後怎麼處理
增加一個死循環,然後break條件是為上傳成功。即在獲取網路狀態或者回WiFi連通條件下上傳答,上傳完畢把條件改為false自然就退出死循環。為了性能可以適當在死循環里休眠一段時間再去判斷狀態,然後6的話就上傳。
10、Android 以Get方法向伺服器提交數據,參數里含有中文
可以用抄Get方式實現;
方法:通過拼接url在url後添加相應的數據,如:http://IPvideonews/GetInfoServlet?title=霍比特人&timelength=100;
缺點:通過Get方式提交數據只能發送2K以內的數據,適合發送容量較小的數據,另外,如果發送的數據是中文,則需要對url和伺服器端做相應的亂碼處理(設置能顯示中文的編碼方式),否則會產生亂碼問題。
處理方式如下: