2017-12-28 10 views
0

ich meine api in Postbote getestet und es gibt jsonMit Retrofit + OkHttp + Gson die api kehrt html obwohl Postbote Rückkehr json

nur eine einfache bekommen api

baseurl/ecom-Dienstleistungen/api/mobile/Aufgaben/user/tokenhere_/bevorstehenden

aber auf Android

@GET("mobile/tasks/user/{id}/upcoming") 
    fun jobList(@Path("id") id: String): retrofit2.Call<Job> 

dies gibt eine hTML-

onerror dies zurück:

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

dies ist der Aufruf

fun fetchData() { 
    apiService.jobList(getUserId()).enqueue(object : retrofit2.Callback<Job>{ 
     override fun onFailure(call: Call<Job>?, t: Throwable?) { 
     Timber.v(t!!.message.toString()) 
     } 
     override fun onResponse(call: Call<Job>?, response: Response<Job>?) { 
      Timber.v(response!!.body().toString()) 
     } 
    }) 

Job = data

json:

{ 
    "type": "success", 
    "text": "200", 
    "data": [ 
    { 
     "requestId": "5a31fc2b9af83128136f8fb3", 
     "taskDetailRequestId": null, 
     "clientEmail": null, 
     "imageBase64": null, 
     "imageLogoWidth": 0, 
     "imageLogoHeight": 0, 
     "additionalEmails": [], 
     "clientId": "5891d6b01d58301538b578ea", 
     "clientServiceAddress": { 
     "id": "5891d6b01d58301538b578eb", 
     "_refs": null, 
     "name": "tony chew", 
     "address1": null, 
     "address2": null, 
     "pinCode": "123123", 
     "createdUserId": null, 
     "lastUpdatedUserId": null, 
     "latitude": 0, 
     "longitude": 0, 
     "organizationId": null, 
     "addressType": null 
     }, 
     "startDate": 1513311600000, 
     "endDate": 1513312500000, 
     "userRegId": "5891d7521d58301538b578fd", 
     "requestDate": 1513225200000, 
     "serviceName": "Service 1 SImple", 
     "serviceRequest": null, 
     "userTaskDetailsId": "5a31fc319af83128136f8fb9", 
     "fromSubclient": false, 
     "requestStatus": "ASSIGNED", 
     "serviceRequestType": "SERVICE", 
     "contractPayments": null 
    } 
    ] 
} 

Job.kt

data class Job(
    @Expose @SerializedName("type") val type: String, //success 
    @Expose @SerializedName("text") val text: String, //200 
    @Expose @SerializedName("data") val data: List<Data> 
) 
+0

hinzufügen die erwartete JSON und die Definition von 'Job' – Pelocho

+0

@Pelocho Job enthält Art, Text und Datenfelder –

+0

Sie Zeichenfolge bekommen, aber Sie müssen' JSONObject' –

Antwort

0

Möglicherweise müssen Sie die Header-

Accept bieten http://square.github.io/retrofit/#api-declaration

@Headers("Accept: application/json") 
@GET("mobile/tasks/user/{id}/upcoming") 
    fun jobList(@Path("id") id: String): retrofit2.Call<Job> 

Aber es ist auch möglich, dass Ihre Anfrage aus anderen Gründen wie Auth versagt und irgendwo umgeleitet zu werden . Versuchen Sie jedoch zuerst, den Header zu akzeptieren. Aber Sie liefern nicht genug Details in Ihrer Frage, um definitiv zu antworten.

+0

Ist die anderes mit diesem Header: { „Accept“: " */* "} –

+0

Ihre Frage ist nicht reproduzierbar oder vollständig genug, um eine definitive Antwort zu geben. –

Verwandte Themen