導航:首頁 > 操作系統 > 安卓如何提交數據到伺服器

安卓如何提交數據到伺服器

發布時間:2022-05-24 16:40:18

android POST提交

一、需要用到的場景

在jQuery中使用$.post()就可以方便的發起一個post請求,在android程序中有時也要從伺服器獲取一些數據,就也必須得使用post請求了。

二、需要用到的主要類

在android中使用post請求主要要用到的類是HttpPost、HttpResponse、EntityUtils

三、主要思路

1、創建HttpPost實例,設置需要請求伺服器的url。

2、為創建的HttpPost實例設置參數,參數設置時使用鍵值對的方式用到NameValuePair類。

3、發起post請求獲取返回實例HttpResponse

4、使用EntityUtils對返回值的實體進行處理(可以取得返回的字元串,也可以取得返回的byte數組)

代碼也比較簡單,注釋也加上了,就直接貼出來了

[java]
package com.justsy.url;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.os.Bundle;

public class HttpURLActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("start url...");
String url = "http://192.168.2.112:8080/JustsyApp/Applet";
// 第一步,創建HttpPost對象
HttpPost httpPost = new HttpPost(url);

// 設置HTTP POST請求參數必須用NameValuePair對象
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("action", "downloadAndroidApp"));
params.add(new BasicNameValuePair("packageId", "89dcb664-50a7-4bf2-aeed-49c08af6a58a"));
params.add(new BasicNameValuePair("uuid", "test_ok1"));

HttpResponse httpResponse = null;
try {
// 設置httpPost請求參數
httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
httpResponse = new DefaultHttpClient().execute(httpPost);
//System.out.println(httpResponse.getStatusLine().getStatusCode());
if (httpResponse.getStatusLine().getStatusCode() == 200) {
// 第三步,使用getEntity方法活得返回結果
String result = EntityUtils.toString(httpResponse.getEntity());
System.out.println("result:" + result);
T.displayToast(HttpURLActivity.this, "result:" + result);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("end url...");
setContentView(R.layout.main);
}
}

ADD:使用HttpURLConnection 進行post請求

[java]
String path = "http://192.168.2.115:8080/android-web-server/httpConnectServlet.do?PackageID=89dcb664-50a7-4bf2-aeed-49c08af6a58a";
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setConnectTimeout(5000);
System.out.println(conn.getResponseCode());

============================================================================================================================

通過get和post方式向伺服器發送請求

首先說一下get和post的區別

get請求方式是將提交的參數拼接在url地址後面,例如http://www..com/index.jsp?num=23&jjj=888;
但是這種形式對於那種比較隱私的參數是不適合的,而且參數的大小也是有限制的,一般是1K左右吧,對於上傳文件
就不是很適合。

post請求方式是將參數放在消息體內將其發送到伺服器,所以對大小沒有限制,對於隱私的內容也比較合適。
如下Post請求

POST /LoginCheck HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: http://192.168.2.1/login.asp
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ZHCN)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: 192.168.2.1
Content-Length: 39
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: language=en

Username=admin&checkEn=0&Password=admin //參數位置

在android中用get方式向伺服器提交請求:

在android模擬器中訪問本機中的tomcat伺服器時,注意:不能寫localhost,因為模擬器是一個單獨的手機系統,所以要寫真是的IP地址。
否則無法訪問到伺服器。

//要訪問的伺服器地址,下面的代碼是要向伺服器提交用戶名和密碼,提交時中文先要經過URLEncoder編碼,因為模擬器默認的編碼格式是utf-8
//而tomcat內部默認的編碼格式是ISO8859-1,所以先將參數進行編碼,再向伺服器提交。
private String address = "http://192.168.2.101:80/server/loginServlet";

public boolean get(String username, String password) throws Exception {
username = URLEncoder.encode(username);// 中文數據需要經過URL編碼
password = URLEncoder.encode(password);
String params = "username=" + username + "&password=" + password;
//將參數拼接在URl地址後面
URL url = new URL(address + "?" + params);
//通過url地址打開連接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//設置超時時間
conn.setConnectTimeout(3000);
//設置請求方式
conn.setRequestMethod("GET");
//如果返回的狀態碼是200,則一切Ok,連接成功。
return conn.getResponseCode() == 200;
}

在android中通過post方式提交數據。

public boolean post(String username, String password) throws Exception {
username = URLEncoder.encode(username);// 中文數據需要經過URL編碼
password = URLEncoder.encode(password);
String params = "username=" + username + "&password=" + password;
byte[] data = params.getBytes();

URL url = new URL(address);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(3000);
//這是請求方式為POST
conn.setRequestMethod("POST");
//設置post請求必要的請求頭
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");// 請求頭, 必須設置
conn.setRequestProperty("Content-Length", data.length + "");// 注意是位元組長度, 不是字元長度

conn.setDoOutput(true);// 准備寫出
conn.getOutputStream().write(data);// 寫出數據

return conn.getResponseCode() == 200;
想了解根多信息請登錄http://www.xaafeicuie.com/

⑵ 怎麼將安卓客戶端數據傳給伺服器

server端:
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
UserDAO userDAO = new UserDAO();
ArrayList list = userDAO.queryUser();
JSONArray array = JSONArray.fromObject(list);
out.write(array.toString());
out.flush();
out.close();
client端:

說明:在伺服器端將list集合轉化為JSONArray對象,以字元串的形式傳到Android的客戶端,再在客戶端,將字元串轉換為JSONArray對象,遍歷JSONArray對象即可。

⑶ android中get方式和post方式提交數據到伺服器的區別

get請求方式是將提交的參數拼接在url地址後面,例如http://www..com/index.jsp?num=23&jjj=888;
但是這種形式對於那種比較隱私的參數是不適合的,而且參數的大小也是有限制的,一般是1K左右吧,對於上傳文件
就不是很適合。

post請求方式是將參數放在消息體內將其發送到伺服器,所以對大小沒有限制,對於隱私的內容也比較合適。
如下Post請求

⑷ android開發怎麼提交數據

easy。。。。如果你這是URL形式的話。。COOKIE方式等。方法太多了。。。
我來舉例。。方法我就不說了。。太多了。。
首先應用啟動後請求.sdfahsjkdfha.fhasjkh/fdhsa?=什麼fdsa=什麼(問號內的可以是獲取手機型號,類型之類的信息
然後伺服器做出相應,給手機一個COOKIE
以後應用打開的時候除了請求URL還提供COOKIE。伺服器就能辨識設備了

⑸ android中怎麼樣將客戶端的數據傳給服務端

將客戶端數據傳給服務端 ,需要服務端需要提供介面,客戶端將數據整理後 調用介面發送數據即可。Http POST 提交即可。

⑹ Android開發中如何將手機中的數據向伺服器發送並且儲存在伺服器中的資料庫

Android無法直接連接資料庫,一般 android app通過http協議連接web( 數據格式可以是json,xml),由web處理業務數據及數據存取。

⑺ 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");
這樣就是封裝發送解析的過程
}.

⑻ 怎麼用安卓手機上傳數據到網上伺服器也就是怎麼能讓手機和網站通訊

不是很明確你的需求?
如果你是為了把手機通訊錄和簡訊記錄等備份到網上或電腦上,那麼有很多軟體都可以,從360、騰訊或者豌豆莢、91助手什麼的都有類似的。反正我個人目前認為用得比較順手的是騰訊的 應用助手,可以說是我對於騰訊大批量垃圾軟體中除了QQ之外罕有的評價為正面的軟體……

騰訊應用助手(或者叫做手機精靈?)很奇怪,我至今不明白為什麼這個軟體如此難以搜索到下載,而騰訊又確實有繼續開發這個軟體而不是廢棄它(每幾個星期都會發現軟體在更新),但你就算在騰訊官網你都很難找到它下載地址@_@
但這個軟體的好處是各種手機管理很方便,特別是用wifi直接控制手機可以不用數據線,可以避免插上數據線後,一旦電腦讀取手機的TF卡則手機不能讀取TF卡的尷尬局面。電腦通過wifi控制手機,則手機仍然可以正常使用TF卡和所有手機功能而不會因TF卡被卸載而運行不正常。

如果你的意思是上網看網頁或者QQ之類的,直接裝個安卓版的QQ或者瀏覽器就解決了,你完全可以 把手機就當做一台正常電腦來用,唯一的缺點就是屏幕太小,看字看圖不方便,打字什麼的也不如鍵盤順手罷了。

⑼ 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運行效果

⑽ android中數據上傳到伺服器怎麼實現

伺服器端寫個servlet,然後在doPost()方法里處理客戶端上傳的文件,大概代碼: DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(1024 * 1024); // 設置最多隻允許在內存中存儲的數據, 單位:位元組 factory.setRepository(cachepath); // 設置一旦文件大小超過設定值時數據存放的目錄 ServletFileUpload srvFileUpload = new ServletFileUpload(factory); srvFileUpload.setSizeMax(1024 * 1024 * 1024); // 設置允許用戶上傳文件大小, 單位:位元組 // 開始讀取上傳信息 List fileItems = null; try { fileItems = srvFileUpload.parseRequest(request); } catch (Exception e) { System.out.println("獲取上傳信息。。。。。。失敗"); } // 依次處理每個上傳的文件 Iterator iter = fileItems.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); // 忽略其他不是文件域的所有表單信息 if (!item.isFormField()) { // 取出文件域的所有表單信息 } else { // 取出不是文件域的所有表單信息 } }

閱讀全文

與安卓如何提交數據到伺服器相關的資料

熱點內容
三台伺服器配置IP地址 瀏覽:171
如何用命令方塊連續對話 瀏覽:274
win7linux共享文件夾 瀏覽:301
命令符打開本地服務 瀏覽:597
android應用程序源碼 瀏覽:699
安卓開發工程師簡歷怎麼寫 瀏覽:57
熱水器水量伺服器是什麼意思 瀏覽:115
stk衛星編譯 瀏覽:477
對後台程序員的要求 瀏覽:758
ios大文件夾圖標 瀏覽:624
生的計劃pdf 瀏覽:711
oppoa93加密便簽在哪查找 瀏覽:19
兩個數字的加減乘除運算編程 瀏覽:227
給手機加密碼忘記了怎麼辦 瀏覽:601
單片機運算符 瀏覽:297
移動端微信商城源碼 瀏覽:443
編程貓下一個背景在哪裡 瀏覽:358
javaclasstype 瀏覽:239
樂高編程和樂高課的延伸 瀏覽:357
蘋果手機怎麼切換app美國賬號 瀏覽:865