0
我正在使用Retrofit 2向ASP.NET API發送POST請求,我得到的是響應中的HTML而不是JSON。如果我更改目標URL,並調用不同的API,並得到JSON響應Retrofit 2返回HTML而不是JSON
這裏是我的API接口
@POST("PosLogin")
Call<CinekinRequest> login();
休息經理
public static final String BASE_URL = "******************";
private API homeApi;
public API getAPi() {
if (homeApi == null) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(logging);
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.client(httpClient.build())
.build();
homeApi = retrofit.create(API.class);
}
return homeApi;
}
執行我的登錄信息()
public void login(final Context context, CinekinRequest login){
Log.e("login", "starting");
Call call = manager.getAPi().login();
call.enqueue(new Callback<CinekinRequest>() {
@Override
public void onResponse(Call<CinekinRequest> call, Response<CinekinRequest> response) {
Toast.makeText(context, "Success " + response.message(), Toast.LENGTH_SHORT).show();
Log.e("res", "success");
}
public void onFailure(Call<CinekinRequest> call, Throwable t) {
Toast.makeText(context, "error: " + t.getMessage(), Toast.LENGTH_LONG).show();
Log.e("error", t.getMessage());
}
});
}
我建議測試使用類似[郵差(HTTPS的API:// WWW .getpostman.com /)查看返回的響應類型。 API聽起來像它沒有返回json。 – mononz
只需檢查一次回覆。有時候由於錯誤,你會得到html格式的響應。 –
原來,API實際上是一個配置爲返回JSON的SOAP API。我曾使用過Retrofit,被告知它是一個REST API。因此我改變了我的代碼,它正在工作。感謝大家。 –