Http协议post请求

Post请求

Post请求与Get请求的区别
  • Get请求的参数是直接放在url后面的,而Post请求是放在请求体中的
  • Get请求参数的长度会根据浏览器的不同实现有一定限制,而Post请求参数长度没有限制
  • Get请求方便测试,直接输入地址即可,而Post请求不方便测试,需要借助代码或者工具进行发送
  • Get请求和Post请求没有本质的区别,只是定义上的区别,比如如果你非要将get方式的参数放在请求体中,那么服务器也是可以接收处理的,同样,你也可以将post方式的参数拼在url后面
Post请求的使用场景
  • 使用Post请求上传键值对
  • 使用Post请求上传json串
  • 使用Post请求上传单个文件
  • 使用Post请求上传多个文件
使用Post方法上传键值对,代码如下
public void asyncPost(String url,HashMap<String, String> params,TextHttpResponseHandler responseHandler){
    RequestParams requestParams = new RequestParams(params);
    asyncHttpClient.post(url, requestParams, responseHandler);
}
/**
 * post提交key-value
 * @param url2
 */
private void postKeyValue(String url) {
    HashMap<String, String> params = new HashMap<String, String>();
    params.put("username", "俊哥");
    params.put("password", "111");
    HttpHelper.get().asyncPost(url, params, new TextHttpResponseHandler() {
        @Override
        public void onSuccess(int arg0, Header[] arg1, String text) {
            tv_result.setText(text);
        }
        @Override
        public void onFailure(int arg0, Header[] arg1, String arg2, Throwable arg3) {

        }
    });
}
使用Post方式上传文件,代码如下:
public void asyncUploadFile(String url, String key, File file,TextHttpResponseHandler responseHandler) {
    RequestParams requestParams = new RequestParams();
    try {
        requestParams.put(key, file);
        asyncHttpClient.post(url,requestParams , responseHandler);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}
private void uploadFile() {
    try {
        File file = new File(Environment.getExternalStorageDirectory()+"/dog.jpg");
        HttpHelper.get().asyncUploadFile(upload, "file", file, new TextHttpResponseHandler() {
            @Override
            public void onSuccess(int arg0, Header[] arg1, String text) {
                tv_result.setText(text);
            }
            @Override
            public void onFailure(int arg0, Header[] arg1, String arg2, Throwable arg3) {

            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
}
常见Content-Type的类型:

普通文本:text/plain
表单键值对:application/x-www-form-urlencoded
文件数据:application/octet-stream
json数据:application/json
xml数据:text/xml

Post请求相关注意事项:

传递中文参数问题,Get请求同样需要注意,需要对url进行编码,对应的类有URLEncoder和URLDecoder,否则会乱码,当然很多第三方http库已经处理该问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值