es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo escribir la receta correcta para una solicitud HTTP POST en Groovy.

Estoy tratando de escribir una receta para una solicitud HTTP POST en Groovy y la forma en que lo estoy haciendo es editando una receta anterior pero adaptándola a mis propias necesidades:

  1. Establecer dos propiedades de solicitud (Content-Type: application/json, Authorization: Bearer xxxxx)
  2. Establecer datos en bruto (json) ({“var1″: “valor 1”, “var2″: “valor 2”})

La receta que intento modificar es:

def baseUrl = new URL('http://some.url.com/')
def connection = baseUrl.openConnection()
connection.with {
    doOutput = true
    requestMethod = 'POST'
    setRequestProperty(['Content-Type': 'application/json', 'Authorization': 'Bearer xxxx'])
    outputStream.withWriter { writer ->
    writer
    }
    println content.text
}

Al principio, al ejecutar el script, obtengo el siguiente error:

Excepción lanzada

java.io.IOException: El servidor devolvió un código de respuesta HTTP: 401 para la URL: http://some.url.com/

La otra cosa es que no sé cómo añadir la necesidad (2) al script.

Gracias de antemano.

Tags:  

Answer

  1. Avatar for davy.ai

    Para modificar la receta de una solicitud HTTP POST en Groovy, siga estos pasos:

    1. Establezca las propiedades de solicitud necesarias agregando el siguiente código bajo setRequestProperty:
    connection.setRequestProperty('Content-Type', 'application/json')
    connection.setRequestProperty('Authorization', 'Bearer xxxxx')
    
    1. Establezca los datos en crudo agregando el siguiente código bajo outputStream.withWriter:
    writer.write('{\"var_1\": \"valor 1\", \"var_2\": \"valor 2\"}')
    

    Asegúrese de escapar las comillas dobles alrededor de las claves y los valores en los datos JSON utilizando barras invertidas.

    La receta modificada debería verse así:

    def baseUrl = new URL('http://some.url.com/')
    def connection = baseUrl.openConnection()
    connection.with {
        doOutput = true
        requestMethod = 'POST'
        connection.setRequestProperty('Content-Type', 'application/json')
        connection.setRequestProperty('Authorization', 'Bearer xxxxx')
        outputStream.withWriter { writer ->
            writer.write('{\"var_1\": \"valor 1\", \"var_2\": \"valor 2\"}')
        }
        println content.text
    }
    

    Respecto al error java.io.IOException, parece que hay un problema con su autenticación. Asegúrese de estar utilizando el token correcto para el encabezado de Authorization.

Comments are closed.