【发布时间】:2017-05-17 04:43:57
【问题描述】:
我如何发布如下JSONObject 请求?
原始请求:
{
"pObj": [],
"robj": [
{
"l_index": "1",
"user_id": "111",
"vername": "1",
"fcmtoken": "ghkghkhkh"
}
],
"uobject": [],
"pname": "y6y68uuy7"
}
在 Volley 中,我可以成功发布JSONObject 请求。但是当我在 Retrofit 中使用它时,我的请求更改如下:
我在日志中得到了什么:
{
"nameValuePairs": {
"pObj": {
"values": []
},
"robj": {
"values": [
{
"nameValuePairs": {
"l_index": "1",
"user_id": "111",
"vername": "1",
"fcmtoken": "ghkghkhkh"
}
}
]
},
"uobject": {
"values": []
},
"pname": "y6y68uuy7"
}
}
我收到来自服务器端的错误请求。
我用于改造的 API 接口:
public interface ApiInterface {
@Headers( "Content-Type: application/json; charset=utf-8")
@POST("re_clientdata")
Call<String> savePost(@Body JSONObject req);
}
我的 APIClient
public class ApiClient {
private static Retrofit retrofit = null;
public static Retrofit getClient(String baseUrl) {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(interceptor).build();
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
MainActivity 代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendPost(jRequest);
}
public void sendPost(JSONObject requestobject) {
Log.e("requestobject",requestobject.toString());
Call<String> call =mAPIService.savePost(requestobject);
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String>callback,Response<String>response) {
String res = response.body();
Log.e("DEMO", "post submitted to API." + response);
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Log.e("DEMO", "Unable to submit post to API.",t);
Log.e("call", String.valueOf(call));
}
});
}
注意:我也尝试使用HashMap,但自动添加了相同的nameValuePairs 参数。如果我使用 Gson JsonObject 然后请求序列化转换。因此,我不想在服务器端进行任何更改,因为使用 Volley 可以正常工作。但是现在我想使用相同的请求来使用 Retrofit。
【问题讨论】:
-
试试这个解决方案可能会对你有所帮助。 http://stackoverflow.com/a/36821182/7750922
-
欢迎伴侣@a.dev