Android 后台开发通信
在这里插入代码片public class MainActivity extends AppCompatActivity {
String TAG = MainActivity.class.getCanonicalName();
private EditText et_data_uname;
private EditText et_data_upass;
private HashMap<String, String> stringHashMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_data_uname = (EditText) findViewById(R.id.et_data_uname);
et_data_upass = (EditText) findViewById(R.id.et_data_upass);
stringHashMap = new HashMap<>();
}
public void loginGET(View view) {
stringHashMap.put("username", et_data_uname.getText().toString());
stringHashMap.put("password", et_data_upass.getText().toString());
new Thread(getRun).start();
}
public void loginPOST(View view) {
stringHashMap.put("username", et_data_uname.getText().toString());
stringHashMap.put("password", et_data_upass.getText().toString());
new Thread(postRun).start();
}
/**
* get请求线程
*/
Runnable getRun = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
requestGet(stringHashMap);
}
};
/**
* post请求线程
*/
Runnable postRun = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
requestPost(stringHashMap);
}
};
/**
* get提交数据
*
* @param paramsMap
*/
private void requestGet(HashMap<String, String> paramsMap) {
try {
String baseUrl = "http://10.0.2.2:8080/TestServices/servlet/LoginDateServlet?";
StringBuilder tempParams = new StringBuilder();
int pos = 0;
for (String key : paramsMap.keySet()) {
if (pos > 0) {
tempParams.append("&");
}
tempParams.append(String.format("%s=%s", key, URLEncoder.encode(paramsMap.get(key), "utf-8")));
pos++;
}
Log.e(TAG,"params--get-->>"+tempParams.toString());
String requestUrl = baseUrl + tempParams.toString();
// 新建一个URL对象
URL url = new URL(requestUrl);
// 打开一个HttpURLConnection连接
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
// 设置连接主机超时时间
urlConn.setConnectTimeout(5 * 1000);
//设置从主机读取数据超时
urlConn.setReadTimeout(5 * 1000);
// 设置是否使用缓存 默认是true
urlConn.setUseCaches(true);
// 设置为Post请求
urlConn.setRequestMethod("GET");
//urlConn设置请求头信息
//设置请求中的媒体类型信息。
urlConn.setRequestProperty("Content-Type", "application/json");
//设置客户端与服务连接类型
urlConn.addRequestProperty("Connection", "Keep-Alive");
// 开始连接
urlConn.connect();
// 判断请求是否成功
if (urlConn.getResponseCode() == 200) {
// 获取返回的数据
String result = streamToString(urlConn.getInputStream());
Log.e(TAG, "Get方式请求成功,result--->" + result);
} else {
Log.e(TAG, "Get方式请求失败");
}
// 关闭连接
urlConn.disconnect();
} catch (Exception e) {
Log.e(TAG, e.toString());
}
}
/**
* post提交数据
*
* @param paramsMap
*/
private void requestPost(HashMap<String, String> paramsMap) {
try {
String baseUrl = "http://10.0.2.2:8080/TestServices/servlet/LoginDateServlet";
//合成参数
StringBuilder tempParams = new StringBuilder();
int pos = 0;
for (String key : paramsMap.keySet()) {
if (pos >0) {
tempParams.append("&");
}
tempParams.append(String.format("%s=%s", key, URLEncoder.encode(paramsMap.get(key), "utf-8")));
pos++;
}
String params = tempParams.toString();
Log.e(TAG,"params--post-->>"+params);
// 请求的参数转换为byte数组