servicio crear consumir consume java rest httpurlconnection http-status-code-400

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(); }