Android使用Put方式提交数据

 

前一阵子,公司有个api接口必须使用put方式请求提交数据,但是在java中put方式的使用相当少,网上几乎很难找到相应的例子,摸索了一阵子,终于搞定了,下面分享给大家:

 

1、四种http请求方式作用

  1. POST   /uri     创建  
  2. DELETE /uri/xxx 删除   
  3. PUT    /uri/xxx 更新或创建  
  4. GET    /uri/xxx 查看  

2、post和put的区别

PUT,DELETE操作是幂等的。所谓幂等是指不管进行多少次操作,结果都一样。比如我用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有不同,DELETE也是一样。顺便说一句,因为GET操作是安全的,所以它自然也是幂等的。
POST操作既不是安全的,也不是幂等的,比如常见的POST重复加载问题:当我们多次发出同样的POST请求后,其结果是创建出了若干的资源。
安全和幂等的意义在于:当操作没有达到预期的目标时,我们可以不停的重试,而不会对资源产生副作用。从这个意义上说,POST操作往往是有害的,但很多时候我们还是不得不使用它。
还有一点需要注意的就是,创建操作可以使用POST,也可以使用PUT,区别在于POST 是作用在一个集合资源之上的(/uri),而PUT操作是作用在一个具体资源之上的(/uri/xxx),再通俗点说,如果URL可以在客户端确定,那么就使用PUT,如果是在服务端确定,那么就使用POST,比如说很多资源使用数据库自增主键作为标识信息,而创建的资源的标识信息到底是什么只能由服务端提供,这个时候就必须使用POST。

3、最后上代码

 

public static String doPut(String id, String token) {
      String ret = null;
      try {

	//跟HttpPost请求方式的代码差别并不大
	HttpPut request = new HttpPut(DEV_URL);  //关键是这句,DEV_URL为你的api接口地址
	//添加参数
	List<NameValuePair> values = new ArrayList<NameValuePair>();
	values.add(new BasicNameValuePair("id", id));
	values.add(new BasicNameValuePair("device_token", token));

	// request.setHeader("Accept-Language", "zh-CN");    这里可以设置一些请求头
	// request.setHeader("Accept",
	// "application/json, application/xml, text/html, text/*, image/*, */*");
	DefaultHttpClient client = new DefaultHttpClient();

	UrlEncodedFormEntity urlEntity = new UrlEncodedFormEntity(values,
	"UTF-8");
	request.setEntity(urlEntity);

	HttpResponse response = client.execute(request);
	if (response != null) {
		StatusLine statusLine = response.getStatusLine();
		int statusCode = statusLine.getStatusCode();
		if (statusCode == 200 || statusCode == 403) {
			HttpEntity entity = response.getEntity();
			InputStream inputStream = entity.getContent();
			if (inputStream != null) {
				 //这里我封装了一个读取输入流的工具类,大家可以自行处理
				ret = StreamTools.readInputStream(inputStream); 
				inputStream.close();
			}
		}
	}


     } catch (Exception e) {
	Debug_AdLog.e(e);  //自己封装的调试日志类
     }
     return ret;
}

4.后话

现在安卓实际开发中网络请求基本都是用了第三方框架的,例如okhttp,volley等,这些框架对请求方式都兼容,所以并不会造成太大麻烦。以上只是本人使用比较原始的安卓网络请求HttpClient。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猫King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值