編輯:關於Android編程
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
android:id="@+id/et_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="請輸入用戶名" >
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="請輸入密碼" />
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="login"
android:text="get登陸" />
public class LoginActivityextends Activity {
private EditText et_username;
private EditText et_password;
private EditText et_file_path;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et_password = (EditText)this.findViewById(R.id.et_password);
et_username = (EditText)this.findViewById(R.id.et_username);
et_file_path = (EditText)this.findViewById(R.id.et_file_path);
}
/**
* 以get的方式 提交數據到服務器
*
* @param view
*/
public void login(View view) {
String password =et_password.getText().toString().trim();
String username =et_username.getText().toString().trim();
if(TextUtils.isEmpty(password) || TextUtils.isEmpty(username)) {
Toast.makeText(this, "用戶名和密碼不能為空", 0).show();
return;
} else {
// 通過get方式提交數據到服務器
//獲取在res/values/string.xml文件中定義的服務端的請求路徑
String path = getResources().getString(R.string.serverurl);
//調用向服務端發送請求的方法:
String result = NetService.sendDataByHttpClientGet(path,username, password);
}
}
/*
* 1. 拼裝url 把參數進行 url的編碼 URLEncoder.encode();
2. 通過http的get請求發送數據到服務器
* (中文亂碼的問題)? 把數據按照tomcat的 iso-8859-1的方式進行轉碼. byte[] 在android下默認采用的編碼方式
* utf-8的編碼方式
*/
public static StringsendDataByGet(String path, String username,
String password) throwsException {
// ?name=zhangsan&password=123
// 解決姓名 或者 密碼裡面的空格或者非法字符串的問題
//拼接get方式的請求路徑
String urlstr = path + "?name=" +URLEncoder.encode(username)
+ "&password=" + URLEncoder.encode(password);
//連接服務端
URL url = new URL(urlstr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
if (conn.getResponseCode() == 200) {
//獲取服務端的數據的流
InputStream is =conn.getInputStream();
//同工具類將流轉成字節
byte[] result =StreamTools.getBytes(is);
return newString(result);//創建string對象
}
return null;
}
5、在服務端向向客戶端響應數據:要以流的形式:並設置utf-8的編碼形式
response.getOutputStream().write("登陸成功".getBytes("utf-8"));
1、 在默認的情況下 android的字符編碼是UTF-8的編碼形式,所以服務端響應的數據要以utf- 8的編碼格式返回到客戶端。
2、在以get方式請求客戶端時,對url中的請求數據要進行url編碼,保證對空格和中文的傳輸。
String urlstr = path + "?name=" +URLEncoder.encode(username)
1、post請求
public static String sendDataByPost(String path, String username,
String password) throwsException {
URL url = new URL(path);
//連接服務器
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//設置請求方式
conn.setRequestMethod("POST");
conn.setConnectTimeout(5000);
// 一定要指定dooutput 的參數 運行客戶端寫數據給服務器
conn.setDoOutput(true);//表示要以流的形式將數據寫給服務端
//拼接數據
String content = "name=" + URLEncoder.encode(username)+ "&password="
+ URLEncoder.encode(password);
byte[] buffer = content.getBytes();
//設置請求頭:content-Type
conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
//設置請求頭Content-Length
conn.setRequestProperty("Content-Length",content.length() + "");
// 得到http的輸出流
OutputStream os = conn.getOutputStream();
// 把內容寫給了服務器
os.write(buffer);
// 注意的是: 在面向http協議編程 處理post請求的時候
//獲取響應碼
if (conn.getResponseCode() == 200) {
InputStream is =conn.getInputStream();
byte[] result =StreamTools.getBytes(is);
return newString(result);
}
return null;
}
2、post請求注意事項:
post 方式提交的數據 沒有大小的限制
指定post的請求的地址
指定http的請求方式 為post
指定請求頭中的Content-Type Content-Length
conn.setDoOutput(true);
利用conn.getoutputstream.write();
獲取服務器返回回來的相應
1、get方式是通過組拼url的方式提交數據到服務器,
2、Post的請求方式是通過組拼提交的數據鍵值對,以流的方式寫給了服務器,
Post請求方式提交數據到服務端請求頭中必須要有Content-Type和Content-Length。
現在開始具體 處理每一個導航頁面的邏輯,首先看第二個導航頁這裡需要實現綁定sim卡序列號的功能,注意添加相應的權限:uses-permission android:nam
一、Android Service1.建立一個serviceservice和activity很相識,只是service在後台運行,activity在前台運行,他們都屬於同
前言現在的APP大部分需要接入支付功能,而支付的主流就是微信支付和支付寶支付,網上關於微信支付和支付支付資料很多,但是這些資料隨著官方的變動可能變得毫無用處,所以我建議直
AIDL與其他IDL語言類似,你需要做一些工作。 它允許你定義客戶端與服務端達成一致的程序接口使用進程間通信相互交流。 在ANdroid上面,一個進程不能正常的訪問另一個