Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将2个对象模型作为输入发送到@body Reformation_Android_Kotlin_Retrofit_Retrofit2 - Fatal编程技术网

Android 将2个对象模型作为输入发送到@body Reformation

Android 将2个对象模型作为输入发送到@body Reformation,android,kotlin,retrofit,retrofit2,Android,Kotlin,Retrofit,Retrofit2,嗨,我想在不创建新api模型的情况下发送2个对象 例如,我有一个名为User的类和另一个名为Device的类 我想结合这两种模型,并将其作为请求主体发送 改装后请求将如下所示: @POST("/login") fun loginAPI(@Body user: UserModel, @Body device : DeviceModel): Observer<CallbackModel> 记住:我知道我可以创建一个包含用户和设备属性等的新类。问题是我不喜欢为每个端点创建一个新类。您可以

嗨,我想在不创建新api模型的情况下发送2个对象

例如,我有一个名为User的类和另一个名为Device的类

我想结合这两种模型,并将其作为请求主体发送

改装后请求将如下所示:

@POST("/login")
fun loginAPI(@Body user: UserModel, @Body device : DeviceModel): Observer<CallbackModel>

记住:我知道我可以创建一个包含用户和设备属性等的新类。问题是我不喜欢为每个端点创建一个新类。

您可以创建如下对象:

JSONObject parent = new JSONObject();

JSONObject user = new JSONObject();
user.put("key", "value");
...

JSONObject device = new JSONObject();
device.put("key", "value");
...

parent.put("user", user);
parent.put("device", device);

改型不允许在一个请求中发送多个body对象,因为它包含POST请求的消息体。因此,作为替代解决方案,您可以在hashmap主体中传递这两个模型,如下所示:

API接口

@POST("/login")
fun loginAPI(@Body map: HashMap): Observer<CallbackModel>
@POST(“/login”)
趣味罗吉纳皮(@Body-map:HashMap):观察者
呼叫类

val map = HashMap<String, Object>()
map.put("user", userModel)
map.put("device", deviceModel)
val-map=HashMap()
map.put(“用户”,userModel)
map.put(“设备”,设备模型)

希望有帮助。

您能修改端点吗?如果是,您可以将所有这些混合在一个jsonI中。我不想传递JSONObject,事实上,我想传递用户和设备模型作为改造后请求的输入inteface@SinaMirshafiei有两条建议:1)发送用户和设备查询参数,这样就不需要创建和发送任何json对象。2) 如果您想将数据作为正文发送,您必须将它们组合在一个json中,因为这里的正文表示HTML POST的消息正文,您只能将一个参数作为正文传递。
val map = HashMap<String, Object>()
map.put("user", userModel)
map.put("device", deviceModel)