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!
ersetzen Wenn einige mo senden möchten Re-Komplex versuchen Retrofit und Gson. Es ist viel einfacher als httpurlconnection und org.json –