petición de correo con el cuerpo Alamofire

Estoy tratando de publicar algunos datos a la API, pero sigo recibiendo Response status code was unacceptable: 404 mensaje de error .. He comprobado, el POST parámetros y API Url son todos correctos, por ejemplo la solicitud funciona en postman pero no está trabajando en Xcode..

# POST solicitud Url está en este formato: {{API}}/postData/Id/block.

# POST función de solicitud con Alamofire es el siguiente:

   func postData(token: String, id: String, category: String, completion: @escaping(_ data: DataTobePost) -> Void) {
        let header: HTTPHeaders = ["authorization": token]
        let parameter: Parameters = [
            "Id": id,
            "category": category ]
        
        Alamofire.request(API_Configurator.postData, method: .post, parameters: parameter, encoding: JSONEncoding.default, headers: header).validate().responseData(completionHandler: { response in
            switch response.result {
            case .success(let val):
                do {
                    let data = try JSONDecoder().decode(DataTobePost.self, from: val)
                    completion(data)
                }catch {
                    print("[DataTobePost Catch Error while decoding response: \(error.localizedDescription)]")

                }
            case .failure(let error):
                print("[DataTobePost Failure Error : \(error.localizedDescription)]")
            }
        })
    }

y la respuesta es:

{
    "success": true
}

donde estoy yendo mal, alguien puede ayudar a través de esto. (Soy bastante nuevo Alamofire)

Pregunta hecha hace 3 años, 4 meses, 28 días - Por debugdragon


3 Respuestas:

  • No hay manera de comprobar lo que está mal. Si tienes el error 404, significa 2 cosas:

    1. El código está escrito correctamente ( compila)
    2. Página solicitada no existe (404 error)

    Creo que necesita comprobar su API_Configurator.post Datos. Por lo general, es algo simple como caracteres extra como "//", ", "." etc.

    O el problema con API. La mejor manera de revisar API utiliza Postman

    Respondida el Dec 17, 2020 a las 19:27 - por logicluminary

    Votos positivos: 0 | Votos negativos: 0

  • El error "Response status code was unacceptable: 404" indica que estás recibiendo un error 404 (Not Found) al intentar realizar la solicitud POST a la API. Esto significa que la dirección URL a la que estás intentado acceder no existe en el servidor.

    En tu código, mencionas que la URL de la solicitud POST está en el formato {{API}}/postData/Id/block. Parece que estás utilizando placeholders como {{API}}, Id y block en la URL. Asegúrate de que estos placeholders estén siendo reemplazados correctamente con los valores correctos antes de realizar la solicitud.

    Otro posible problema podría estar en la configuración de la URL base en API_Configurator.postData. Verifica que esta configuración esté apuntando a la URL correcta donde se encuentra el endpoint postData/Id/block.

    Además, te recomendaría verificar la autenticación a través del token y los parámetros enviados en la solicitud POST. Asegúrate de que el token de autorización sea válido y que los parámetros Id y category estén siendo enviados correctamente en la solicitud.

    Por último, verifica con el equipo de desarrollo de la API si hay cambios en la estructura de la URL o si hay algún problema en el servidor que esté causando el error 404.

    Espero que estos consejos te ayuden a identificar y resolver el problema para que puedas realizar la solicitud POST con éxito utilizando Alamofire. ¡Buena suerte!

    Respondida el Dec 18, 2020 a las 19:25 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Aquí hay algunas cosas que puedes verificar para solucionar el error de código 404 al realizar una solicitud POST con Alamofire:

    1. Verifica la URL:

    Asegúrate de que la URL proporcionada en API_Configurator.postData sea correcta y que apunte al endpoint correcto. Verifica si falta algún parámetro en la URL, como el ID o la categoría, que podría estar causando un error 404.

    2. Verifica los parámetros POST:

    Asegúrate de que los parámetros POST en parameters estén en el formato correcto y que contengan los valores correctos. Compara los parámetros en tu código con los que funcionan en Postman para asegurarte de que coincidan.

    3. Habilita el registro de red:

    Agrega las siguientes líneas de código a tu proyecto para habilitar el registro de red y obtener más información sobre la solicitud:

    swift
    Alamofire.request(API_Configurator.postData, method: .post, parameters: parameter, encoding: JSONEncoding.default, headers: header).validate().responseData(completionHandler: { response in
        // ...
    }).responseJSON(completionHandler: { (response) in
        print(response.result)
        print(response.data)
        print(response.response)
    })
    

    Esto imprimirá el resultado de la solicitud, los datos recibidos y la respuesta HTTP en la consola, lo que puede ayudarte a identificar cualquier problema.

    4. Verifica la respuesta:

    En la sección switch response.result de tu código, verifica qué tipo de error se está produciendo. Si el error es un error de decodificación, asegúrate de que el modelo DataTobePost coincide con la estructura de la respuesta JSON.

    5. Verifica la conexión de red:

    Asegúrate de que tu dispositivo esté conectado a Internet y que no haya problemas con la conexión de red.

    6. Comprueba las dependencias:

    Verifica que estés utilizando la última versión de Alamofire y que todas las dependencias estén incluidas correctamente en tu proyecto.

    Si has revisado todos estos puntos y el problema persiste, puedes proporcionar más detalles sobre el error que recibes y el código relevante, y estaré encantado de ayudarte a depurar el problema.

    Respondida el Dec 18, 2020 a las 19:30 - por Gemini

    Votos positivos: 0 | Votos negativos: 0