Android 使用http post

本文详细对比了GET与POST两种表单提交方式的主要区别,包括数据传输方向、可见性、数据大小限制及安全性等方面,并提供了POST请求的具体实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表单提交中get和post方式的区别有5点 
  • 1.get是从服务器上获取数据,post是向服务器传送数据。 
  • 2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。 
  • 3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。 
  • 4.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 
  • 5.get安全性非常低,post安全性较高。
private String doPost() {

		String jsonResult = "";// 返回的结果

		String uri = "http://192.168.*.*:8080/*/*/myHomework.jhtml";

		/** 第一步: 建立HttpPost对象 */
		HttpPost request = new HttpPost(uri);

		/** 第二步: NameValuePair实现请求参数的封装 */
		List<NameValuePair> parms = new ArrayList<NameValuePair>();

		parms.add(new BasicNameValuePair("stid","265B15A1-6117-4472-992F-259CAB8077D7"));
		parms.add(new BasicNameValuePair("cid","30884C87-AE81-4182-93B6-B81D3F451592"));

		/** 第三步: 添加请求参数到请求对象 */
		try {
			request.setEntity(new UrlEncodedFormEntity(parms, HTTP.UTF_8));

			/** 第四步: 发送请求并等待响应 */
			HttpResponse response = new DefaultHttpClient().execute(request);

			/** 第五步: 判断状态码为200 ok */
			if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

				/** 第六步: 读取返回数据,如果有异常,记录异常信息 */
				jsonResult = EntityUtils.toString(response.getEntity());
			} else {
				Log.e(TAG, response.getStatusLine().toString());
			}
		} catch (Exception e) {
			Log.e(TAG, e.getMessage());
		}
		return jsonResult;
	}
或者 使用下面的方式:
同样的,我们用一个例子来做分析,以熟悉各个方法的使用。

  • A、使用Map来存储参数
Map<String, String> map = new HashMap<String, String>(); 
map.put("name", "ataaw"); 
map.put("password", "ataaw.com");
  • B、使用DefaultHttpClient创建HttpClient实例
DefaultHttpClient httpClient = new DefaultHttpClient();
  • C、构建HttpPost
HttpPost post = new HttpPost(“http://192.168.*.*:8080/*/*/myHomework.jhtml”);
  • D、将由Map存储的参数转化为键值NameValue
List<BasicNameValuePair> postData = new ArrayList<BasicNameValuePair>(); 
                    for (Map.Entry<String, String> entry : map.entrySet()) {
                        postData.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); 
                    }
  • E、使用编码构建Post实体
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postData, HTTP.UTF_8);
  • F、设置Post实体
post.setEntity(entity);
  • G、执行Post方法
HttpResponse response = httpClient.execute(post);
  • H、获取返回实体
    HttpEntity httpEntity = response.getEntity();
  • I、将H中返回实体转化为输入流
InputStream is = httpEntity.getContent();
  • J、读取输入流
StringBuffer sb = new StringBuffer(); 
BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
           String line = ""; 
           while((line=br.readLine())!=null){ 
                    sb.append(line); 
           }
以上就是Android中通过Post来实现客户端与服务端的通讯过程,完成参数封装到发送到服务器,最后接收服务端返回的数据,从而完成一个完整的HTTP数据传递过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值