java.lang.IllegalStateException: Expected BEGIN_OBJECT war aber STRING in Zeile 1 Spalte 1, Pfad $

Habe ich überprüft eine Menge von Referenz, bevor Sie tatsächlich die Frage. Wie die meisten Menschen, die ich bin Aufruf eines web service und immer dem obigen Ergebnis. Mein problem ist eher speziell, dass, bevor Sie Fragen, lassen Sie mich hinzufügen, meine code snippet

public static WebService getRestService(String newApiBaseUrl, String accessToken)
    {
        OkHttpClient.Builder httpClient = new OkHttpClient.Builder();


        if (BuildConfig.DEBUG) {
            HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
            logging.setLevel(HttpLoggingInterceptor.Level.BODY);
            httpClient.addInterceptor(logging);
        }


        Gson gson = new GsonBuilder()
                .setLenient()
                .create();

        restBuilder = new Retrofit.Builder()
                .baseUrl(newApiBaseUrl)
                .client(httpClient.build())
                .addConverterFactory(GsonConverterFactory.create(gson));

        if (accessToken != null) {
            AuthenticationInterceptor interceptor =
                    new AuthenticationInterceptor(accessToken);

            if (!httpClient.interceptors().contains(interceptor)) {
                httpClient.addInterceptor(interceptor);

                restBuilder.client(httpClient.build());
            }
        }

        retrofit = restBuilder.build();
        return retrofit.create(WebService.class);
    }

Bitte ignorieren Sie den interpreter. Dies ist mein service, generator-Klasse, über die alle web-service aufgerufen wird. Ich rufe eine POST-Methode zurückgeben wird, mir eine einfache Antwort.

Sehe ich für mich die richtige Antwort im "Android-Bildschirm". Aber wenn seine geht durch JsonConverterFactory, es gibt mir die obige Fehlermeldung. Eins weiß ich sicher, dass web-service ist wieder in einem einfachen text-Antwort, da ist nichts spezifisch, um zurück zur Anwendung. Gibt es eine Möglichkeit, mit welcher ich konvertieren kann meine text-Antwort in die Klasse. Bitte Schreien Sie zurück, wenn ich nichts übersehen habe.

Auch hinzufügen meine interface-Methode

@Headers({
            Constants.ApiHeader.CONTENT_TYPE_JSON
    })

    @POST("POST_URL/{number}")
    Call<MyResponseModel> getActualProductLocation(@Header("access_token") String accessToken, @Path("number") String number, @Body List<MyRequestModel> body);

Update
Ich schaffte es, einen Teil der code-snippet vom server. Dies ist, was ist Ihre Antwort so Aussehen:

Response.status(200).entity("Response Success").build()
  • Post MyResponseModel. Vielleicht ist es nicht im richtigen format.
  • Seine leere, da es keine Schlüssel-Wert-paar zurückgegeben, die vom server(JSON-Daten).Muss ich eine beliebige string-variable in der Klasse?
  • Mein problem ist eher, wie bestimmte so? Diese Probleme sind alle gleich: die json-Daten ist nicht das, was der Konverter erwartet. Es ist möglich die gson-Konverter nicht finden, ein einsamer string gültiges json (es, wenn)
  • server wieder leerer string.
  • seine Rückkehr mich etwas "Response-Erfolg"
  • Hier kenne ich server wieder einfacher text und nicht als JSON, so dass ich zu verbrauchen text anstelle der Umwandlung von JSON.

InformationsquelleAutor Android | 2017-02-15
Schreibe einen Kommentar