Principales respuestas
Consumir web service con RestSharp

Pregunta
-
Buenas tardes
Junto con agradecer sus respuestas y ayudas, requiero de su ayuda para subir un documento a un web service Rest utilizando RestSharp, utilizando Postman obtuve el siguiente codigo de RestSharp
var client = new RestClient(url); var request = new RestRequest(Method.POST); request.AddHeader("Postman-Token", postManToken); request.AddHeader("cache-control", "no-cache"); request.AddHeader("Authorization", authorization); request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"); request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Dis-data; name=\"input3.pdf\"; filename=\"D:\\prueba.pdf\"\r\nContent-Type: application/pdf\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", ParameterType.RequestBody); IRestResponse response = client.Execute(request);
Dicho codigo lo parametrice con los datos requeridos de mi aplicacion, pero aunque obtengo una respuesta positiva del web service el documento no fue subido al sistema, adjunto mi codigo espero contar con ayuda para poder solucionar este problema
string ingreso = micredencial; string directorio = @"C:\Documento"; string file = "Prueba_201904091117.pdf"; string documento = Path.Combine(directorio, file); string fecha = (DateTime.Now).ToString("yyyyMMdd_HHmmss"); string nameBatch="Hipotecario_"+Environment.MachineName+"_"+fecha; var client = new RestClient(url +nameBatch); var request = new RestRequest(Method.POST); request.AddHeader("cache-control", "no-cache"); request.AddHeader("Authorization", "Basic "+ingreso+""); request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"); request.AddFile("receipt[receipt_file]",File.ReadAllBytes(file), "Invoice.pdf", "application/octet-stream"); request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Dis-data; name=\"input3.pdf\"; filename=\""+documento+"\"\r\nContent-Type: application/pdf\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", ParameterType.RequestBody); IRestResponse response = client.Execute(request); var content = response.Content; string xml = content; XElement doc = XElement.Parse(xml); var codigo = doc.Descendants("HTTP_Code").First().Value; var id = doc.Descendants("ID").First().Value; if (codigo == "422") { MessageBox.Show("Unprocessable Entity"); } else if (codigo == "500") { MessageBox.Show("Internal Server Error"); } else if (codigo == "403") { MessageBox.Show("Unautherized Access"); } else if (codigo == "200") { MessageBox.Show("Documento subido al sistema"); } else { MessageBox.Show("Error incomprendido"); } MessageBox.Show("termine");
Atento a sus comentarios.
- Editado Sergio ParraModerator miércoles, 10 de abril de 2019 18:35 Eliminar datos sensibles de credenciales
Respuestas
-
hola
Ceo que la url la estas armand de forma dinamica en base a Environment.MachineName y una fecha, eso esta muy raro
si pones un breakpoint en el codigo y tomas la url generada dinamicamente y la llevas a postman, puedes validar que resuelve correctamente?
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Carlos_Ruiz_M martes, 9 de abril de 2019 18:29
- Votado como útil Sergio ParraModerator miércoles, 10 de abril de 2019 18:37
- Propuesto como respuesta Sergio ParraModerator miércoles, 10 de abril de 2019 18:37
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 17:56
-
Buenas tardes Leandro,
La URL dinamica que ingreso esta correcta y es aceptada por el web service ya que este se describe de la siguiente manera
HOST/dcma/rest/uploadBatch/BC36/NombreInstancia
URL web service: HOST/dcma/rest/uploadBatch/
Proceso: BC36
Nombre del archivo unico: NombreInstancia
El problema es que el web service me acepta la informacion entregandome un ID especifico, pero no reconoce el archivo que deseo subir al sistema y queda en vacio
- Editado Sergio ParraModerator miércoles, 10 de abril de 2019 18:37 Eliminar datos sensibles de credenciales
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 17:56
-
Gracias Leandro por tu utilizando ayuda, tenia un problema en el codigo para poder subir el documento por medio de RestSharp, ahora tengo el codigo funcional y parametrizado.
public void subirDocumento(string batch,string pathDocumento){ string ingreso = micredencial; string directorio = @"C:\Documento"; string file = "Prueba_201904091117.pdf"; string documento = Path.Combine(directorio, file); string fecha = (DateTime.Now).ToString("yyyyMMdd_HHmmss"); string nameBatch="Hipotecario_"+Environment.MachineName+"_"+fecha; var client = new RestClient(url+batch+"/"+nameBatch+""); var request = new RestRequest(Method.POST); request.AddHeader("cache-control", "no-cache"); request.AddHeader("Authorization", "Basic "+ingreso+""); request.AddFile("input3.pdf", pathDocumento); IRestResponse response = client.Execute(request); var content = response.Content; string xml = content; XElement doc = XElement.Parse(xml); var codigo = doc.Descendants("HTTP_Code").First().Value; var id = doc.Descendants("ID").First().Value; }
- Editado Sergio ParraModerator miércoles, 10 de abril de 2019 18:36 Eliminar datos sensibles de credenciales
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 17:56
-
Hola Nicolás . Voy a borrar tanto de tu pregunta como respuesta los datos relacionados con el servicio. Estás publicando credenciales que pueden ser usadas por terceros.
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 17:56
Todas las respuestas
-
hola
Ceo que la url la estas armand de forma dinamica en base a Environment.MachineName y una fecha, eso esta muy raro
si pones un breakpoint en el codigo y tomas la url generada dinamicamente y la llevas a postman, puedes validar que resuelve correctamente?
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Carlos_Ruiz_M martes, 9 de abril de 2019 18:29
- Votado como útil Sergio ParraModerator miércoles, 10 de abril de 2019 18:37
- Propuesto como respuesta Sergio ParraModerator miércoles, 10 de abril de 2019 18:37
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 17:56
-
Buenas tardes Leandro,
La URL dinamica que ingreso esta correcta y es aceptada por el web service ya que este se describe de la siguiente manera
HOST/dcma/rest/uploadBatch/BC36/NombreInstancia
URL web service: HOST/dcma/rest/uploadBatch/
Proceso: BC36
Nombre del archivo unico: NombreInstancia
El problema es que el web service me acepta la informacion entregandome un ID especifico, pero no reconoce el archivo que deseo subir al sistema y queda en vacio
- Editado Sergio ParraModerator miércoles, 10 de abril de 2019 18:37 Eliminar datos sensibles de credenciales
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 17:56
-
Gracias Leandro por tu utilizando ayuda, tenia un problema en el codigo para poder subir el documento por medio de RestSharp, ahora tengo el codigo funcional y parametrizado.
public void subirDocumento(string batch,string pathDocumento){ string ingreso = micredencial; string directorio = @"C:\Documento"; string file = "Prueba_201904091117.pdf"; string documento = Path.Combine(directorio, file); string fecha = (DateTime.Now).ToString("yyyyMMdd_HHmmss"); string nameBatch="Hipotecario_"+Environment.MachineName+"_"+fecha; var client = new RestClient(url+batch+"/"+nameBatch+""); var request = new RestRequest(Method.POST); request.AddHeader("cache-control", "no-cache"); request.AddHeader("Authorization", "Basic "+ingreso+""); request.AddFile("input3.pdf", pathDocumento); IRestResponse response = client.Execute(request); var content = response.Content; string xml = content; XElement doc = XElement.Parse(xml); var codigo = doc.Descendants("HTTP_Code").First().Value; var id = doc.Descendants("ID").First().Value; }
- Editado Sergio ParraModerator miércoles, 10 de abril de 2019 18:36 Eliminar datos sensibles de credenciales
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 17:56
-
Hola Nicolás . Voy a borrar tanto de tu pregunta como respuesta los datos relacionados con el servicio. Estás publicando credenciales que pueden ser usadas por terceros.
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 17:56