Http的post请求和常见的编码,加解密,支付宝和微信支付的使用

Http协议与请求Post请求Post请求与Get请求的区别Get请求的参数是直接放在url后面的,而Post请求是放在请求体中的Get请求参数的长度会根据浏览器的不同实现有一定限制,而Post请求参数长度没有限制Get请求方便测试,直接输入地址即可,而Post请求不方便测试,需要借助代码或者工具进行发送Get请求和Post请求没有本质的区别,只是定义上的区别,比如如果你非要将
摘要由CSDN通过智能技术生成

Http协议与请求

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();
        }
    }
    
  • Post请求相关注意事项:
    • 传递中文参数问题,Get请求同样需要注意,需要对url进行编码,对应的类有URLEncoder和URLDecoder,否则会乱码,当然很多第三方http库已经处理该问题
  • 常见Content-Type定义:
    • 普通文本:text/plain
    • 表单键值对:application/x-www-form-urlencoded
    • 文件数据:application/octet-stream
    • json数据:application/json
    • xml数据:text/xml

Android中常见编码Base64和URL编码

  • URL编码:http协议中请求的url不支持中文和特殊字符(如&?),所以需要对url进行编码和解码,编码使用的是URLEncoder,解码使用的是URLDecoder࿱

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值