HttpURLConnection(GET和POST提交)
get:URL url = new URL(urlString); // URL对象
conn = (HttpURLConnection) url.openConnection(); // 使用URL打开一个链接
conn.setDoInput(true); // 允许输入流,即允许下载
conn.setDoOutput(true); // 允许输出流,即允许上传
conn.setUseCaches(false); // 不使用缓冲
conn.setRequestMethod("GET"); // 使用get请求
is = conn.getInputStream(); // 获取输入流,此时才真正建立链接
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader bufferReader = new BufferedReader(isr);
String inputLine = "";
while ((inputLine = bufferReader.readLine()) != null) {
resultData += inputLine + "\n";
}
post:1.创建
// 封装访问服务器路径
mURL = new URL(params[0]);
// 建立链接
conn = (HttpURLConnection) mURL.openConnection();// 打开链接
2.设置
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST"); // 不能缓存
conn.setUseCaches(false);
conn.connect();
3.参数
// 获取输入流
os = conn.getOutputStream();
data = new DataOutputStream(os);// 通过流的方式把参数传过去,
//data.writeBytes("Name=" + URLEncoder.encode("keke", "utf-8"));
data.writeBytes("dtype=&city=010&bus=847&key=b1adc193b4fe032c04192bd30ba966b4");
data.writeBytes("Name=zs&pwd=123");// + URLEncoder.encode("keke", "utf-8"));
4.输入流接收
mInputStream = conn.getInputStream();
// 封装为字节流
mInputStreamReader = new InputStreamReader(mInputStream);
reader = new BufferedReader(mInputStreamReader);
sb = new StringBuffer();
String readLine = null;
while ((readLine = reader.readLine()) != null) {
sb.append(readLine).append("\n");
httpclient://声明访问方式
HttpClient mHttpClient = new DefaultHttpClient();
// 设置HttpGet请求方式
Log.i("TAG", "111111");
HttpGet mHttpGet = new HttpGet(params[0]); // 设置请求方法
HttpResponse mHttpResponse = mHttpClient.execute(mHttpGet); // 请求服务器并且接收服务器响应
Log.i("TAG", "222222");
if (mHttpResponse.getStatusLine().getStatusCode() == 200) { // 判断状态码
mHttpEntity = mHttpResponse.getEntity(); // 转换服务器返回的数据
result = EntityUtils.toString(mHttpEntity, "gbk");
get和post的区别: Http方法:Get请求与Post请求的区别
Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求
Get是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改
Get请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密。
Get传输的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了,不同的浏览器对URL的长度的限制是不同的。
GET请求的数据会被浏览器缓存起来,用户名和密码将明文出现在URL上,其他人可以查到历史浏览记录,数据不太安全。在服务器端,用Request.QueryString来获取Get方式提交来的数据
Post请求则作为http消息的实际内容发送给web服务器,数据放置在HTML Header内提交,Post没有限制提交的数据。Post比Get安全,当数据是中文或者不敏感的数据,则用get,因为使用get,参数会显示在地址,对于敏感数据和不是中文字符的数据,则用post
POST表示可能修改变服务器上的资源的请求,在服务器端,用Post方式提交的数据只能用Request.Form来获取
get:URL url = new URL(urlString); // URL对象
conn = (HttpURLConnection) url.openConnection(); // 使用URL打开一个链接
conn.setDoInput(true); // 允许输入流,即允许下载
conn.setDoOutput(true); // 允许输出流,即允许上传
conn.setUseCaches(false); // 不使用缓冲
conn.setRequestMethod("GET"); // 使用get请求
is = conn.getInputStream(); // 获取输入流,此时才真正建立链接
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader bufferReader = new BufferedReader(isr);
String inputLine = "";
while ((inputLine = bufferReader.readLine()) != null) {
resultData += inputLine + "\n";
}
post:1.创建
// 封装访问服务器路径
mURL = new URL(params[0]);
// 建立链接
conn = (HttpURLConnection) mURL.openConnection();// 打开链接
2.设置
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST"); // 不能缓存
conn.setUseCaches(false);
conn.connect();
3.参数
// 获取输入流
os = conn.getOutputStream();
data = new DataOutputStream(os);// 通过流的方式把参数传过去,
//data.writeBytes("Name=" + URLEncoder.encode("keke", "utf-8"));
data.writeBytes("dtype=&city=010&bus=847&key=b1adc193b4fe032c04192bd30ba966b4");
data.writeBytes("Name=zs&pwd=123");// + URLEncoder.encode("keke", "utf-8"));
4.输入流接收
mInputStream = conn.getInputStream();
// 封装为字节流
mInputStreamReader = new InputStreamReader(mInputStream);
reader = new BufferedReader(mInputStreamReader);
sb = new StringBuffer();
String readLine = null;
while ((readLine = reader.readLine()) != null) {
sb.append(readLine).append("\n");
httpclient://声明访问方式
HttpClient mHttpClient = new DefaultHttpClient();
// 设置HttpGet请求方式
Log.i("TAG", "111111");
HttpGet mHttpGet = new HttpGet(params[0]); // 设置请求方法
HttpResponse mHttpResponse = mHttpClient.execute(mHttpGet); // 请求服务器并且接收服务器响应
Log.i("TAG", "222222");
if (mHttpResponse.getStatusLine().getStatusCode() == 200) { // 判断状态码
mHttpEntity = mHttpResponse.getEntity(); // 转换服务器返回的数据
result = EntityUtils.toString(mHttpEntity, "gbk");
get和post的区别: Http方法:Get请求与Post请求的区别
Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求
Get是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改
Get请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密。
Get传输的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了,不同的浏览器对URL的长度的限制是不同的。
GET请求的数据会被浏览器缓存起来,用户名和密码将明文出现在URL上,其他人可以查到历史浏览记录,数据不太安全。在服务器端,用Request.QueryString来获取Get方式提交来的数据
Post请求则作为http消息的实际内容发送给web服务器,数据放置在HTML Header内提交,Post没有限制提交的数据。Post比Get安全,当数据是中文或者不敏感的数据,则用get,因为使用get,参数会显示在地址,对于敏感数据和不是中文字符的数据,则用post
POST表示可能修改变服务器上的资源的请求,在服务器端,用Post方式提交的数据只能用Request.Form来获取