RuffianZhong / Rx-Mvp

RxJava2+Retrofit2+RxLifecycle2+OkHttp3 封装RHttp 使用MVP模式构建项目
348 stars 86 forks source link

换一个解析器怎么会报错呢 #4

Closed luoyou592 closed 5 years ago

luoyou592 commented 6 years ago

我把GsonConverterFactory换成ScalarsConverterFactory会报错,而且还发现了你封装的解析出现int和double统一解析成后缀变为.0

RuffianZhong commented 6 years ago

@luoyou592 更新了代码,可以参考新代码中的实现,解决 int 等数值型变成浮点型数据

mrcoderzou commented 6 years ago

请问下使用这个框架怎么下载和上传?

RuffianZhong commented 6 years ago

@mrcoderzou 真巧,正在实现中,后面会添加

mrcoderzou commented 6 years ago

@RuffianZhong 好的,期待中

RuffianZhong commented 6 years ago

@mrcoderzou 上传、下载的功能已实现。欢迎拍砖

mrcoderzou commented 6 years ago

@RuffianZhong 赞赞赞

mrcoderzou commented 6 years ago

@RuffianZhong 我在项目中需要上传多个文件,原先的okgo框架是用addFile(key,ArrayList)这种方式,把所有文件放到一个list中上传,现在改成你的框架,是用的file(Map<key,file>),请问下用你的这个框架能否实现像okgo这种一次上传一个ArrayList

RuffianZhong commented 6 years ago

@mrcoderzou 可以的,我这里使用的是Map是一个集合,我设计的初衷是一个文件对应一个key。如果你想要实现一个key对应多个文件,那么你可以使用 IdentityHashMap(Java中key可以重复的Map集合) IdentityHashMap map=new IdentityHashMap(); map.put("icon","file1"); map.put("icon","file2"); map.put("icon","file3");

mrcoderzou commented 6 years ago

@RuffianZhong 好的,我试下,谢谢了

mrcoderzou commented 6 years ago

@RuffianZhong 刚试了下,好像还是不行,后台看到文件列表为空,看了下okgo的源码,和你的框架实现好像有点不一样,不知道 是不是这个导致的。okgo是先new 一个MultipartBody.Builder,然后遍历文件列表,然后把每个file生成一个RequestBody,然后通过addFormDataPart添加到前面new的MultipartBody.Builder里面,最终生成一个RequestBody;你的框架是遍历文件,把问个文件包装成MultipartBody.Part,然后把每个part装入到list,通过upload方法发送出去。

RuffianZhong commented 6 years ago

@mrcoderzou 我亲测可行的呀,后台获取文件的时候根据key遍历是可以得到多个文件的

mrcoderzou commented 6 years ago

@RuffianZhong 我这边试了不行的,不知道啥原因,不过还是感谢你的回答,因为项目紧,这个上传多个文件的我还是保留原来的okgo框架实现,其他不用上传文件的就用你的框架实现,后面看有没有时间再看看这个。

RuffianZhong commented 6 years ago

@mrcoderzou 用OKGO可以用RHttp不行?632835821 有空的话加下我QQ,探讨一下哪里出问题了

luoyou592 commented 6 years ago

我的也是不行哈,不过后台没强制用一个字段,我就用了时间戳

RuffianZhong commented 6 years ago

@luoyou592 使用不同的key就可以上传多个文件,用同一个key就不能上传多个文件是吗?

mrcoderzou commented 6 years ago

@RuffianZhong 不知道跟后台接收方式是否有关,我们这边后台接收用的是框架(@RequestParam(value = "file", required = false) List files)这种方式直接接收客户端传来的文件列表。 另外能否提供一个.file(key,list)的方法?

RuffianZhong commented 6 years ago

@luoyou592 @mrcoderzou 久等了,我详细测试过了,后端用什么方式接收都可以的。 是 IdentityHashMap 特性的问题,key要使用对象模式: IdentityHashMap map = new IdentityHashMap(); map.put(new String("key"), "file1"); map.put(new String("key"), "file2"); map.put(new String("key"), "file3"); 不能使用 IdentityHashMap map = new IdentityHashMap(); map.put(“key”, "file1"); map.put(“key”, "file2"); map.put(“key”, "file3"); 鉴于这个Map大家都不是很熟悉,也为了方便,我添加了一个新的接口: 一个key对应多个文件: file(String key, List fileList)

劳烦试试,如果有什么问题可以反馈给我

mrcoderzou commented 6 years ago

@RuffianZhong 兄弟你改了哪些类?我直接把RHttp这Api这两个类复制过来可以么?

mrcoderzou commented 6 years ago

@RuffianZhong 改了下,还是不行,我特意上传了一个视频文件,但是调用接口基本是秒完成了,感觉文件没有上传,但是其他参数后台可以看到

RuffianZhong commented 6 years ago

@mrcoderzou 给我你的QQ?详细了解一下,我这边测试了很多次,后台也是我自己写的,都是可以保证的