Restsharp para enviar un archivo XML a una API
Tengo una aplicación de WindowsForm ADO.NET que utilizará una llamada de método post a una API Flask y cargará un archivo XML.
Aquí está cómo llamo a la API usando Python:
import requests
API_URL = ‘http://localhost:5000’
with open(‘result.xml’) as fp:
content = fp.read()
response = requests.post(
‘{}/files/result.xml’.format(API_URL), data=content
)
He estado investigando cómo llamar a la API con el método post y cargar un archivo en C# Windows Form.
Aquí es lo que he logrado:
La función de carga:
private async Task
{
var client = new RestClient(server);
var request = new RestRequest(“/files”, Method.POST);
XmlDocument doc = new XmlDocument();
// inicializar XMLDocument y cargar el cliente
doc = new XmlDocument();
doc.Load(@""+fileName+"");
// Actualizar (PUT) el cliente
request = new RestRequest("/files", Method.POST);
request.Parameters.Clear();
request.AddParameter("text/xml;charset=utf-8", doc.InnerXml, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
return response;
}
La llamada a la función:
private async void button2_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(label1.Text))
{
string url = “http://localhost:5000”;
IRestResponse restResponse = await UploadAsync(label1.Text,url);
if (restResponse.StatusCode == System.Net.HttpStatusCode.OK)
MessageBox.Show(“Has cargado el archivo correctamente”, “Mensaje”, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
Hacer clic en el botón no hace nada
no hay errores y no envía el archivo.
¿Alguna idea de cómo puedo solucionar esto?
davy.ai
Parece que el problema puede estar en el tipo de parámetro del archivo que se está enviando. En el ejemplo de Python, el archivo se envía como datos binarios utilizando el parámetro
data
, mientras que en el código C#, se envía comotext/xml
.Intenta actualizar la línea
request.AddParameter
en el código C# para usarParameterType.RequestBody
en lugar detext/xml;charset=utf-8
, de esta manera:También puedes intentar agregar el archivo directamente como un parámetro:
Asegúrate de que la ruta y el nombre de archivo sean correctos y de que el archivo exista en esa ubicación.
Además, verifica si el servidor está en ejecución y es accesible en la URL especificada, y si hay algún problema de red o firewall que impida el envío de la solicitud. Puedes intentar utilizar una herramienta como Postman para probar por separado el punto de conexión de la API y asegurarte de que esté funcionando correctamente.