Skip to content

Map Matching large requests error response MalformedJsonException #952

@Guardiola31337

Description

@Guardiola31337

While testing #948 I run into the following issue:

W/MapboxMapMatching: Failed to complete your request. 
    com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $
        at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1568)
        at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1409)
        at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:593)
        at com.google.gson.stream.JsonReader.peek(JsonReader.java:425)
        at com.mapbox.api.matching.v5.models.AutoValue_MapMatchingError$GsonTypeAdapter.read(AutoValue_MapMatchingError.java:63)
        at com.mapbox.api.matching.v5.models.AutoValue_MapMatchingError$GsonTypeAdapter.read(AutoValue_MapMatchingError.java:24)
        at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:39)
        at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:27)
        at com.mapbox.api.matching.v5.MapboxMapMatching.errorDidOccur(MapboxMapMatching.java:194)
        at com.mapbox.api.matching.v5.MapboxMapMatching.access$000(MapboxMapMatching.java:56)
        at com.mapbox.api.matching.v5.MapboxMapMatching$1.onResponse(MapboxMapMatching.java:146)
        at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

It's happening here https://github.com/mapbox/mapbox-java/blob/master/services-matching/src/main/java/com/mapbox/api/matching/v5/MapboxMapMatching.java#L194 when making requests too large in bytes (e.g. adding hundreds of coordinates) - we receive a response without errorBody 👉 code=413, message=Request Entity Too Large while when making smaller requests we receive a response with errorBody (message=Too many coordinates; maximum number of coordinates is 100.) 👉 code=422, message=Unknown which is parsed correctly.

cc @osana @danpat @danpaz

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions