我在服务调用中传递了以下对象数组。
[
{
"ParkingSpace": {
"sid": "WorldSensing.vhu6lom3sovk6ahpogebfewk5kqadvs4.5385fc250cf2497dfe5679d1"
}
},
{
"ParkingSpace": {
"sid": "WorldSensing.vhu6lom3sovk6ahpogebfewk5kqadvs4.5385ff2f0cf2497dfe567c0c"
}
},
{
"ParkingSpace": {
"sid": "WorldSensing.vhu6lom3sovk6ahpogebfewk5kqadvs4.5385fd700cf2e65ecf6330c6"
}
}, {
"ParkingSpace": {
"sid": "WorldSensing.vhu6lom3sovk6ahpogebfewk5kqadvs4.5385fefe0cf2497dfe567bee"
}
}, {
"ParkingSpace": {
"sid": "WorldSensing.vhu6lom3sovk6ahpogebfewk5kqadvs4.5385ff690cf2497dfe567c3f"
}
}, {
"ParkingSpace": {
"sid": "WorldSensing.vhu6lom3sovk6ahpogebfewk5kqadvs4.55e972d21170d0c2fd7d15b1"
}
}]
我正在尝试如下:
private String generateParkingspaceBody(final List<String> listOfsIds) {
//sids array
JSONArray sidsArray = new JSONArray();
for (String sId: listOfsIds) {
//creating sidObject and object
JSONObject sIdObject = new JSONObject();
JSONObject object = new JSONObject();
try {
sIdObject.put("sid", sId);
object.put("ParkingSpace",sIdObject);
sidsArray.put(object);
} catch (JSONException e) {
CPALog.e(TAG,e.getMessage());
}
}
return sidsArray.toString();
}
将此字符串发送到服务调用中,如:
Response getNearByParkingSpaces(@Header("Authorization") String accessToken,
@Header("Content-Type") String contentType,
@Body String arrayOfSids);
但是在logact中显示的请求是:
"[{\"ParkingSpace\":{}},{\"ParkingSpace\":{}},{\"ParkingSpace\":{}},{\"ParkingSpace\":{}},{\"ParkingSpace\":{}},{\"ParkingSpace\":{}},{\"ParkingSpace\":{}},{\"ParkingSpace\":{}},{\"ParkingSpace\":{}},{\"ParkingSpace\":{}},{\"ParkingSpace\":{}},{\"ParkingSpace\":{}},{\"ParkingSpace\":{}}]"
请帮帮我,如何发送此请求?
提前致谢。
答案 0 :(得分:9)
您无需将对象转换为JSONArray,Retrofit会自动为您执行此操作。
只需将您的API方法声明更改为:
@Headers({
"Content-type: application/json"
})
Response getNearByParkingSpaces(@Header("Authorization") String accessToken,
@Body List<String> arrayOfSids);
答案 1 :(得分:0)
我遇到相同的问题,通过添加以下依赖项来解决此问题:
implementation 'com.squareup.retrofit2:converter-scalars:$version'
现有多种用于各种数据格式的翻新转换器。您可以将Java对象序列化和反序列化为JSON或XML或任何其他数据格式,反之亦然。在可用的转换器中,您还会找到Retrofit Scalars转换器,它可以解析要放入请求正文中的所有Java原语。转换适用于两个方向:请求和响应。 https://futurestud.io/tutorials/retrofit-2-how-to-send-plain-text-request-body
然后,您可以将generateParkingspaceBody用作发布的值。
generateParkingspaceBody.toString() as your request body