精华内容
下载资源
问答
  • Okhttp3参数文件上传~重复造轮子中实用帖,不罗嗦。下面贴代码/** * 带参数文件上传 * @param path 网址 * @param params key - value数据 * @param files key - file路径 * @param callback 自定义的...

    Okhttp3 带参数文件上传~重复造轮子中

    实用帖,不罗嗦。下面贴代码

    /**
         * 带参数文件上传
         * @param path 网址
         * @param params  key - value数据
         * @param files  key - file路径
         * @param callback    自定义的Callback 你用你的就好
         */
        public static void post_file(String path,
                                     HashMap<String, Object> params,HashMap<String, String> files, Callback callback){
    
            MultipartBody.Builder multipartBuider = new MultipartBody.Builder();
            multipartBuider.setType(MultipartBody.FORM);
    
            if (params!=null&&params.size()>0){
                for (Map.Entry<String, Object> entry :params.entrySet()){
                    multipartBuider.addFormDataPart(entry.getKey(),String.valueOf(entry.getValue()));
                }
            }
    
            if (files!=null&&files.size()>0){
                for (Map.Entry<String, String> entry: files.entrySet()){
                    File file = new File(entry.getValue());
                    RequestBody fileBody = RequestBody.create(MediaType.parse("image/png") , file);
                    multipartBuider.addFormDataPart(String.valueOf(entry.getKey()),file.getName(),fileBody);
                }
            }
    
            Request request=new Request.Builder().url(path).post(multipartBuider.build())
                    .build();
    
    
            Call call = okHttpClient.newCall(request);
    
            call.enqueue(callback);
    
        }
    展开全文
  • OKHttp3参数发送get和post请求工具类

    千次阅读 2019-12-17 23:20:18
    需要引入依赖 <dependency>...com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.3.1</version> </dependency> impo...

     需要引入依赖

    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>4.3.1</version>
    </dependency>
    import java.io.IOException;
    import java.util.Map;
    import java.util.concurrent.TimeUnit;
    
    import okhttp3.*;
    
    public class HttpUtil {
    	private HttpUtil() {
    	}
    
    	/**
    	 * 发送get请求
    	 *
    	 * @param url    地址
    	 * @param params 参数
    	 * @return 请求结果
    	 */
    	public static String get(String url, Map<String, String> params) {
    		return request("get", url, params);
    	}
    
    	/**
    	 * 发送post请求
    	 *
    	 * @param url    地址
    	 * @param params 参数
    	 * @return 请求结果
    	 */
    	public static String post(String url, Map<String, String> params) {
    		return request("post", url, params);
    	}
    
    	/**
    	 * 发送http请求
    	 *
    	 * @param method 请求方法
    	 * @param url    地址
    	 * @param params 参数
    	 * @return 请求结果
    	 */
    	public static String request(String method, String url, Map<String, String> params) {
    
    		if (method == null) {
    			throw new RuntimeException("请求方法不能为空");
    		}
    
    		if (url == null) {
    			throw new RuntimeException("url不能为空");
    		}
    
    		HttpUrl.Builder httpBuilder = HttpUrl.parse(url).newBuilder();
    
    		if (params != null) {
    			for (Map.Entry<String, String> param : params.entrySet()) {
    				httpBuilder.addQueryParameter(param.getKey(), param.getValue());
    			}
    		}
    
    		Request request = new Request.Builder()
    				.url(httpBuilder.build())
    				.method(method, new FormBody.Builder().build())
    				.build();
    
    		try {
    			OkHttpClient client = new OkHttpClient.Builder()
    					.readTimeout(20, TimeUnit.SECONDS)
    					.build();
    			Response response = client.newCall(request).execute();
    			return response.body().string();
    		} catch (IOException e) {
    			return null;
    		}
    	}
    
    	/**
    	 * 发送post请求(json格式)
    	 *
    	 * @param url  url
    	 * @param json json字符串
    	 * @return 请求结果
    	 */
    	public static String postJson(String url, String json) {
    
    		Request request = new Request.Builder()
    				.url(url)
    				.post(RequestBody.Companion.create(json, MediaType.Companion.parse("application/json")))
    				.build();
    
    		try {
    			OkHttpClient client = new OkHttpClient();
    			Response response = client.newCall(request).execute();
    			return response.body().string();
    		} catch (IOException e) {
    			return null;
    		}
    	}
    }

     

    展开全文
  • How is it possible to append params to an OkHttp Request.builder?//requestRequest.Builder requestBuilder = new Request.Builder().url(url);I've managed the add header but not params.解决方案Here is a ...

    How is it possible to append params to an OkHttp Request.builder?

    //request

    Request.Builder requestBuilder = new Request.Builder()

    .url(url);

    I've managed the add header but not params.

    解决方案

    Here is a complete example on how to use okhttp to make post request (okhttp3).

    To send data as form body

    RequestBody formBody = new FormBody.Builder()

    .add("param_a", "value_a")

    .addEncoded("param_b", "value_b")

    .build();

    To send data as multipart body

    RequestBody multipartBody = new MultipartBody.Builder()

    .setType(MultipartBody.FORM)

    .addFormDataPart("fieldName", fileToUpload.getName(),RequestBody.create(MediaType.parse("application/octet-stream"), fileToUpload))

    .build();

    To send data as json body

    RequestBody jsonBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"),

    jsonObject.toString());

    Now create request

    Request request = new Request.Builder()

    .addHeader("header_a", "value_a") // to add header data

    .post(formBody) // for form data

    .post(jsonBody) // for json data

    .post(multipartBody) // for multipart data

    .build();

    Response response = client.newCall(request).execute();

    ** fileToUpload is a object of type java File

    ** client is a object of type OkHttpClient

    展开全文
  • Android Okhttp3 传递数组参数

    万次阅读 2018-04-05 10:49:02
    android OKhttp 参数 传递数组类型 这一篇是基于弘扬写的okhttp3Util进行写的。有些Android开发是基于原生的okhttp3进行开发的。传递数组类型也是存在的。说句实在话,我刚刚看下源码使用原生的进行数组传递,还是...

    android OKhttp 参数 传递数组类型 这一篇是基于弘扬写的okhttp3Util进行写的。有些Android开发是基于原生的okhttp3进行开发的。传递数组类型也是存在的。

    说句实在话,我刚刚看下源码使用原生的进行数组传递,还是比较简单比较方便的。其本质是不管开发者是用什么样的方式去传递参数的,可以自定义的设置。

    android OKhttp 参数 传递数组类型博客是一样的。

    传递数组分两种形式 

    第一种:写到URL的后面,例如:http://www.baidu.com?key=1&key=2&key=3 穿到后台接收就是 int[] key的形式。

    这种方式的弊端就是数据不能大于64K。64K是 get传递参数的最大值,就像Android的方法不能超过64k一样。有人认为 我方式是用的Post啊 能不能超过64K, 答案很明确 不能。URL传输数据最大值是64K。

    第二种:是使用form表单的形式进行,form表单对大小是没有限制的。问题是怎么构建form表单,一些Android开发者是没有前端开发经验的。

    关于如何构建from表单,form表单具体长什么样子,你看下android OKhttp 参数 传递数组类型这篇博客吧。

    下面我就说下 okhttp3如何构建一个form表单。

    注意,这里一定是 new String("")进行存key的值。

    
    
     /**
         * map<String,String> identityHashMap = new IdentityHashMap<>()</>
         * identityHashMap.put(new String("key"),"value1")
         * identityHashMap.put(new String("key"),"value2")
         * 这里一定是 new String("")进行存key的值。IdentityHashMap 存住的是可重读key 但是 内部对比的是 key的地址,而不是hash值
         * 也就是说内部使用的是 ==做的比对 大家有兴趣可以自己点进去看下 put的方法
         *     </>
         *
         * @param identityHashMap
         * @return
         */
        public MultipartBody multipartBodyData(IdentityHashMap<String,String> identityHashMap){
    MultipartBody.Builder requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM);
    if(identityHashMap ==null || identityHashMap.size() ==0){
                return requestBody;
            }
            
            for (String key :identityHashMap.keySet()){
                requestBody.addFormDataPart(key,identityHashMap.get(key));
    
            }
    
            return requestBody.build();
        }

    急着赶项目的 看到这里就行了。拿着去用吧。

    接着看,一般okhttp3的请求到这里应该是构建一个formBody的表单。

    看下网上流行的例子都是怎么构建的。

    FormBody.Builder formBody = new FormBody.Builder();
    这个没毛病,点进去看下。
    前两行代码是这样的写的,看到这里就不用往下看了。肯定是拼接URL的方式进行传参的。

    这是一个拼接URL的方法。

    所以你下面在调用get。或者post。都是拼接URL的方式进行的。这样也是能传递过去的。

    但是我就想用formDate的格式进行传递。咱们看下。他是如何定义这个传递方式的。

    okhttp3 提供了MultipartBody 也是RequestBody的子类,这个需要你自定义,setType() 就是对你的类型进行自定义设置。

    public static final MediaType FORM = MediaType.parse("multipart/form-data");
    看到有这个类型,也就是一开始贴的那一单代码设置的类型。

    设置完参数之后获取到的就是requestBody了。接下来就是可以愉快地设置参数了

    总结: 自己多看看源码,多看看Android周边的开发。这样给自己定位问题,解决问题都能带来很好地帮助。让自己的军火库里的武器多起来。消灭敌人的把握就大一些


    展开全文
  • 最近遇到的一个问题就是:所有请求接口都要增加一个token参数… 并且token参数有可能过期。 庆幸的是,Okhttp提供了强大的拦截器功能,是一种能够监控,重写,重试调用的强大机制 比如微信 APP登录 { "errcode...
  • Okhttp3上传参数、文件和同时上传

    万次阅读 热门讨论 2017-04-11 15:41:32
    OkHttpClient client=new OkHttpClient();...//一种:参数请求体 FormBody paramsBody=new FormBody.Builder() .add("id",currentPlan.getPlanId()+"") .add("name",currentPlan.getName()) ...
  • okhttp添加动态参数

    2021-04-02 16:31:57
    public static Map get(String url, Map map ) throws IOException { // 可以单独把formbody拿出来 ... // 将进来包含的参数键值对的map集合遍历出来 for (Object o : map.keySet()) { // 将参数添加到from
  • okhttp详解(参数

    万次阅读 2016-12-01 16:08:12
    okHttp2.7用的是new FormEncodingBuilder(),而OkHttp3.x用的是FormBody.Builder();OkHttp MediaType的使用:public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8...
  • okhttp传递数组参数

    千次阅读 2018-04-08 18:52:33
    采用okhttp+rxjava+retrofit向后台传递字符串数组参数,格式如下 { "list": ["xxx","yyy"]//value是个字符串数组 } 最初定义了一个 List<String> list = new ArrayList<>(); 然后转成字符串 String str...
  • 标题OkHttp添加默认参数 通俗的说就是在你的请求连接自动加上你想加的参数例如 https://aaa.bbb.com?aaa=1212&bb=6787&from=android from=android 就是你想增加的参数 在每条连接请求都会带上这个参数 ...
  • Okhttp3参数和文件同时上传

    千次阅读 2017-09-21 17:42:54
    参数存放在map中 文件的地址放在Constant.filePath中 我这里的文件路径已经是完整的,有一些需要这样来获取一个文件 File file = new File(Environment.getExternalStorageDirectory(), “Pictures”); 详情点这里...
  • okHttp请求公共参数

    千次阅读 2018-08-19 21:41:09
    othttp添加请求公共参数的几种方法 第一种 添加在请求链接尾部 HttpUrl url = original.url().newBuilder() //请求尾部链接 .addQueryParameter(VERSION, "") .addQueryParameter(APP_VERSION, &...
  • OKHttp3

    2018-12-10 18:49:49
    参考链接: https://www.jianshu.com/p/da4a806e599b; https://www.cnblogs.com/wjtaigwh/p/6210534.html; OkHttp是一个高效的HTTP客户端 OkHttp的使用是非常简单的....1.OKhttp3的使用 1....
  • OkHttp3

    2017-10-15 19:35:01
    OkHttp的简单使用 Get请求、Form表单形式的POST请求,JSON参数的Post请求,以及简单的文件下载
  • okhttp3

    2020-01-10 15:35:05
    package com.youkeda.test.http... import java.io.IOException; import okhttp3.Call; import okhttp3.OkHttpClient; import okhttp3.Request; import org.apache.commons.lang3.StringUtils; public class GetPa...
  • okhttp 上传带参数文件

    千次阅读 2016-12-23 11:59:41
    /** * 上传文件 * @param actionUrl 连接地址 * @param paramsMap 参数 * @param callback 回调 * @param */ public static void upLoadFile(String actionUrl, HashMap paramsMap, Callback
  • 1.Okhttp3传递post不传递参数 Request mRequest = new Request.Builder() .post(RequestBody.create(null, "")) .url(postUrl) .build();
  • okhttp 3.0 多参数传递

    千次阅读 2016-06-29 17:48:51
    * post请求参数类 */ public static class Param { String key;//请求的参数 String value;//参数的值 public Param(String key, String value) { this.key = key; this.value = value; } } private ...
  • Okhttp3使用

    万次阅读 2018-03-28 11:05:16
    历史发展 Okhttp是一个处理网络请求的开源项目,是安卓最火热的轻量级框架,Retrofit底层也是使用Okhttp,接下来长话短说,... compile 'com.squareup.okhttp3:okhttp:3.9.0' //2、json数据解析的工具 compile 'c...
  • okhttp3使用

    万次阅读 多人点赞 2016-06-03 11:02:12
    一、引入包在项目module下的build.gradle添加okhttp3依赖compile 'com.squareup.okhttp3:okhttp:3.3.1'二、基本使用1、okhttp3 Get 方法1.1 、okhttp3 同步 Get方法/** * 同步Get方法 */ private void okHttp_...
  • 本篇文章主要介绍了Android中Okhttp3实现上传多张图片同时传递参数 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,059
精华内容 9,223
关键字:

okhttp3传参数