Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

403
Vistas
Vapor: envío de solicitudes de publicación

Estoy tratando de enviar una solicitud HTTP usando Vapor para verificar un recaptcha

La API Captcha de Google se define de la siguiente manera:

URL: https://www.google.com/recaptcha/api/siteverify MÉTODO: PUBLICACIÓN

Parámetro POST Descripción
secreto Requerido. La clave compartida entre su sitio y reCAPTCHA.
respuesta Requerido. El token de respuesta del usuario proporcionado por la integración del lado del cliente reCAPTCHA en su sitio.
IP remota Opcional. La dirección IP del usuario.

Entonces necesito hacer una solicitud POST con 2 parámetros (secreto y respuesta).

En Swift tengo:

 func routes(_ app: Application throws { app.on(.POST, "website_form") { req -> EventLoopFuture<View> in var form: FromRequest = /*initial values*/ /*decode form data*/ do { req.client.post("https://www.google.com/recaptcha/api/siteverify") { auth_req in try auth_req.content.encode(CaptchaRequestBody(secret: "6Lfoo98dAAAAALRlUoTH9LhZukUHRPzO__2L0k3y", response: form.recaptcha_response), as: .formData) auth_req.headers = ["Content-Type": "application/x-www-form-urlencoded"] }.whenSuccess { resp_val in print("Response: \(resp_val)") } } } /* More code */ } struct CaptchaRequestBody: Content { let secret: String let response: String }

Después de ejecutar la solicitud de publicación, aparece el siguiente código de error:

 { "success": false, "error-codes": [ "missing-input-secret" ] }

No puedo encontrar ninguna solución que funcione, incluso los documentos oficiales de Vapor no sirvieron, ¿alguien podría ayudarme?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Como dijo Nick: el problema era que en lugar de .formData , necesitaba usar .urlEncodedForm .

over 4 years ago · Santiago Trujillo Denunciar

0

La API de Google requiere que las solicitudes sean formularios con codificación URL. Al usar la configuración .formData , está aplicando MultiPart.

Cambie la configuración a .urlEncodedForm , lo que garantiza que la solicitud cumpla con los requisitos de la API de Google.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda