我需要使用Retrofit 2发布JSON对象。我的JSON对象是
{“ logTime”:“”,“ datas”:[{“ dat1”:“ 1”,“ dat2”:“”,“ dat3”:“”,“ dat4”:“”,“ dat5”:“” } ,{“ dat1”:“ 1”,“ dat2”:“”,“ dat3”:“”,“ dat4”:“”,“ dat5”:“” }]}
我尝试使用以下代码:
API服务
@FormUrlEncoded @Headers({ "Content-Type: application/json", "x-access-token: eyJhbGciOiJIU" }) @POST("/api/employee/checkin") Call<String> CHECKIN(@Body String data);
活动课
JSONStringer jsonStringer = null; try { jsonStringer=new JSONStringer().object().key("logTime").value("") .key("datas") .array() .object().key("dat1").value("1") .key("dat2").value("3") .key("dat3").value("5") .key("dat4").value("5") .endObject() .endArray() .endObject(); } catch (JSONException e) { e.printStackTrace(); } ApiService service = retroClient.getApiService(); Call<String> login = service.CHECKIN(String.valueOf(jsonStringer)); login.enqueue(new Callback<String>() { @Override public void onResponse(Call<String> call, Response<String> response) { dialog.dismiss(); try { String val = response.body(); } catch (Exception e) { e.getMessage(); } } @Override public void onFailure(Call<String> call, Throwable t) { } });
使用此代码时出现“错误:找不到翻新注释。(参数#2)”。请帮我。提前致谢。
试试这个代码
api服务
@POST("/api/employee/checkin") Call<Sample> CHECKIN(@Body JSONStringer data);
API客户端
OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.addInterceptor(new Interceptor() { @Override public Response intercept(Interceptor.Chain chain) throws IOException { Request original = chain.request(); // Request customization: add request headers Request.Builder requestBuilder = original.newBuilder() .addHeader("Content-Type", "application/json") .addHeader("x-access-token", "eyJhbGci"); Request request = requestBuilder.build(); return chain.proceed(request); } }); OkHttpClient client = httpClient.build(); return new Retrofit.Builder() .baseUrl(ROOT_URL) .client(client) .addConverterFactory(GsonConverterFactory.create()) .build();
活动
ApiService service = retroClient.getApiService(); Call<Sample> call = service.CHECKIN(jsonStringer); call.enqueue(new Callback<Sample>() { @Override public void onResponse(Call<Sample> call, Response<Sample> response) { dialog.dismiss(); if (response.isSuccessful()) { Sample result = response.body(); } else { // response received but request not successful (like 400,401,403 etc) //Handle errors } } @Override public void onFailure(Call<Sample> call, Throwable t) { dialog.dismiss(); Toast.makeText(MainActivity.this, "Network Problem", Toast.LENGTH_LONG).show(); } });