2017-01-12 1 views
-1

Ich möchte eine POST-Anfrage mit einigen JSON-Daten an meine NodeJS/Express-API senden. Ich schaffte es, GET-Anfragen ohne Probleme zu machen. Hier ist, was ich für eine POST-Anfrage tun:Ganzes JSON-Objekt, das als JSON-Schlüssel mithilfe von HttpURLConnection in Android gesendet wird

URL u = new URL(url); 
JSONObject jsonObject = new JSONObject(); 
jsonObject.put("nombre", "testing"); 
c = (HttpURLConnection) u.openConnection(); 
c.setDoOutput(true); 
c.setRequestMethod("POST"); 
c.setRequestProperty("Content-length", Integer.toString(URLEncoder.encode(jsonObject.toString(),"UTF-8").length())); 
c.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
c.setUseCaches(false); 
c.setAllowUserInteraction(false); 
c.setConnectTimeout(0); 
c.setReadTimeout(0); 
c.connect(); 

DataOutputStream printout = new DataOutputStream(c.getOutputStream()); 
printout.writeBytes(URLEncoder.encode(jsonObject.toString(),"UTF-8")); 
printout.flush(); 
printout.close(); 

int status = c.getResponseCode(); 

In meinem API habe ich ein console.log(req.body); zu sehen, was mein POST Weg ist immer, und das ist, was ich in meiner Konsole erhalten:

Got this for POST: 
{ '{"nombre":"testing"}': '' } 

Das gesamte JSONObject wird als Schlüssel für das JSON-Objekt mit einem leeren Wert für die HTTP-POST-Anforderung gesendet. Irgendwelche Ideen zu was mache ich falsch? Vielen Dank!

+0

ersetzen Wenn einige mo senden möchten Re-Komplex versuchen Retrofit und Gson. Es ist viel einfacher als httpurlconnection und org.json –

Antwort

1

Versuchen

c.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 

mit

c.setRequestProperty("Content-Type", "application/json"); 

und

printout.writeBytes(URLEncoder.encode(jsonObject.toString(),"UTF-8")); 

mit

+0

Hat super funktioniert! Ich brauchte nur die folgende Zeile zu ändern, um die Content-Länge des JSON zu vergleichen, den ich sende. Vielen Dank! c.setRequestProperty ("Content-length", Integer.toString (requestBody.toString(). length())); –

Verwandte Themen