2017-03-04 1 views
1

Ich versuche einfach, ein JSON-Objekt im Hauptteil einer Anfrage an meine API in NodeJS zu erstellen. Ich erhalte diesen Fehler auf meiner Server-Seite:OKHttp Android Beitrag Ursache Fehler JSON falsch formatiert

SyntaxError: Unexpected token p in JSON at position 1 

Hier ist, wie ich meine Anfrage mit OkHttpClient Handwerk:

String patientAddress = "0x83d0aa553df8bbf2c70c8250a1edbdef5be2ccbe"; 
     MediaType JSON = MediaType.parse("application/json; charset=utf-8"); 
     RequestBody body = RequestBody.create(JSON, "{patientAddress:" + patientAddress + "}"); 

     Request request = new Request.Builder() 
       .url(getString(R.string.main_url) + "/api/getPatientDetails") 
       .headers(buildStandardHeaders(Stormpath.accessToken())) 
       .post(body) 
       .build(); 

EDIT

Problem wast, dass ich nicht meine JSON war die Schaffung rechts, hier ist der Arbeitscode:

String patientAddress = "0x83d0aa553df8bbf2c70c8250a1edbdef5be2ccbe"; 
     MediaType JSON = MediaType.parse("application/json; charset=utf-8"); 
     RequestBody body = RequestBody.create(JSON, "{\"patientAddress\" :\"" + patientAddress + "\"}"); 

     Request request = new Request.Builder() 
       .url(getString(R.string.main_url) + "/api/getPatientDetails") 
       .headers(buildStandardHeaders(Stormpath.accessToken())) 
       .post(body) 
       .build(); 
+0

könntest du die antwort trotzdem annehmen wie es dir die lösung bringt. –

Antwort

1

"{patientAddress:"

Das ist kein gültiger JSON.

Sie müssen die Schlüssel angeben.

"{\"patientAddress\" :\"" + patientAddress + "\"}" 

jedoch bitte eine richtige JSON-Bibliothek verwenden JSON-Strings Objekt

JSONObject params = new JSONObject(); 
params.put("patientAddress", patientAddress); 

Anfrage zu bauen mit params.toString()

Sie auch Retrofit über Okhttp verwenden können, um Java von Ihrem API-Objekte

+0

Warum Retrofit über Okhttp? und das Hinzufügen von Anführungszeichen hat nicht geholfen –

+0

Sie haben sie wahrscheinlich falsch hinzugefügt. Und weil Sie Zugriff auf Gson hätten und nicht den Inhaltstyp festlegen und rohe Strings selbst in Java-Objekte zerlegen müssten. Retrofit verwendet Okhttp unter der Haube. Es ist viel einfacher für die Verwendung der REST-API. –

+0

ich tat es genau wie du sagst und ich bekomme immer noch einen Fehler: SyntaxError: Unerwartetes Token x in JSON an Position 20 –