crear - rest json java
¿Cómo enviar la carga de solicitud a la API REST en Java? (2)
Lo intenté con un cliente de descanso.
Encabezados:
- POST / r / gerrit / rpc / ChangeDetailService HTTP / 1.1
- Anfitrión: git.eclipse.org
- User-Agent: Mozilla / 5.0 (Windows NT 5.1; rv: 18.0) Gecko / 20100101 Firefox / 18.0
- Aceptar: aplicación / json
- Aceptar Idioma: nulo
- Aceptar-Codificación: gzip, desinflar, sdch
- accept-charset: ISO-8859-1, utf-8; q = 0.7, *; q = 0.3
- Content-Type: application / json; charset = UTF-8
- Contenido-longitud: 73
- Conexión: keep-alive
funciona bien. Recupero 200 OK con un buen cuerpo.
¿Por qué establece un código de estado en su solicitud? y la declaración múltiple " Aceptar " con Aceptar: application / json, application / json, application / jsonrequest. solo una declaración es suficiente.
Deseo recuperar los datos JSON de lo siguiente: https://git.eclipse.org/r/#/c/11376/
URL de solicitud: https://git.eclipse.org/r/gerrit/rpc/ChangeDetailService
Método de solicitud: POST
Encabezados de solicitud:
Accept:application/json
Content-Type:application/json; charset=UTF-8
Solicitud de carga útil:
{"jsonrpc":"2.0","method":"changeDetail","params":[{"id":11376}],"id":1}
Ya probé esta respuesta, pero 400 BAD REQUEST
.
¿Alguien puede ayudarme a resolver esto?
Gracias.
El siguiente código funciona para mí.
//escape the double quotes in json string
String payload="{/"jsonrpc/":/"2.0/",/"method/":/"changeDetail/",/"params/":[{/"id/":11376}],/"id/":2}";
String requestUrl="https://git.eclipse.org/r/gerrit/rpc/ChangeDetailService";
sendPostRequest(requestUrl, payload);
implementación del método:
public static String sendPostRequest(String requestUrl, String payload) {
try {
URL url = new URL(requestUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
writer.write(payload);
writer.close();
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer jsonString = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
jsonString.append(line);
}
br.close();
connection.disconnect();
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
return jsonString.toString();
}