Http协议post请求

    xiaoxiao2021-03-26  36

    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库已经处理该问题

    转载请注明原文地址: https://ju.6miu.com/read-513962.html

    最新回复(0)