none
Unexpected character encountered while parsing value: R. Path '', line 0, position 0 RRS feed

Respuestas

  • Buenas,

    Si, eso que has puesto ya me quedaba claro, pero mi pregunta es, a donde enviar el Json? a algún servicio de un tercero? a un servicio tuyo?

    Pregunto esto porque el Json que has puesto es perfectamente valido, podrías ponernos el código que utilizas para generarlo? en caso de que lo estés enviando a un servicio que también estas haciendo tu, podrías indicarnos el código con el que intentas deserializar el Json?

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    martes, 6 de noviembre de 2018 20:42
  • Cuando lo anterior lo paso a este punto, aparece el error

    byte[] byteArray = Encoding.UTF8.GetBytes(datos); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; WebRequest tRequest = WebRequest.Create("https:paginadeltercero.io/?client_id=usuario&client_secret=password"); tRequest.Method = "Post"; tRequest.ContentType = "application/json"; tRequest.Timeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["timeout"].ToString()); tRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; using (Stream dataStream = tRequest.GetRequestStream()) { dataStream.Write(byteArray, 0, byteArray.Length); using (WebResponse tResponse = tRequest.GetResponse()) { using (Stream dataStreamResponse = tResponse.GetResponseStream()) { using (StreamReader tReader = new StreamReader(dataStreamResponse)) { var objText = tReader.ReadToEnd(); myojb = (ResponseObject)serializer.Deserialize(objText, typeof(ResponseObject)); } } } } } /************************************/ }



    martes, 6 de noviembre de 2018 21:12
  • Lo digo porque analizando el mensaje aparece 
    C:\\Users\\juan.ahumada\\Desktop\\webapiCallsouth\\webapiCallsouth\\Controllers\\AltaRequestController.cs:línea

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 7 de noviembre de 2018 18:26
    Moderador

Todas las respuestas

  • Buenas,

    Podrías ampliarnos un poco la información sobre el tema? a simple vista parece correcto el contenido del json... Que es lo que te genera la excepción? podrías indicarnos tal vez el código donde se produce?

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    martes, 6 de noviembre de 2018 20:07
  • Hola Jorge

    Me aparece este error:

    {"Message":"Error.","ExceptionMessage":"Unexpected character encountered while parsing value: R. Path '', line 0, position 0.","ExceptionType":"Newtonsoft.Json.JsonReaderException","StackTrace":"   en Newtonsoft.Json.JsonTextReader.ParseValue()\r\n   en Newtonsoft.Json.JsonTextReader.Read()\r\n   en Newtonsoft.Json.Linq.JToken.ReadFrom(JsonReader reader, JsonLoadSettings settings)\r\n   en Newtonsoft.Json.Linq.JToken.Parse(String json, JsonLoadSettings settings)\r\n   en Newtonsoft.Json.Linq.JToken.Parse(String json)\r\n   en webapiCallsouth.Controllers.AltaRequestController.Window_Loaded()\r\n   en lambda_method(Closure , Object , Object[] )\r\n   en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.<GetExecutor>b__3(Object instance, Object[] methodParameters)\r\n   en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)\r\n   en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---\r\n   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   en System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---\r\n   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   en System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---\r\n   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   en System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"}

    De lo que me llama la atencion es:

    "Unexpected character encountered while parsing value: R. Path '', line 0, position 0.

    martes, 6 de noviembre de 2018 20:33
  • Buenas,

    Si, eso que has puesto ya me quedaba claro, pero mi pregunta es, a donde enviar el Json? a algún servicio de un tercero? a un servicio tuyo?

    Pregunto esto porque el Json que has puesto es perfectamente valido, podrías ponernos el código que utilizas para generarlo? en caso de que lo estés enviando a un servicio que también estas haciendo tu, podrías indicarnos el código con el que intentas deserializar el Json?

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    martes, 6 de noviembre de 2018 20:42
  • Lo envio a un tercero:

    "https://paginadelterceo.io/api/Venta/Contrato/Create?client_id=clave&client_secret=password"

    y para deserializar utilizo
    using Newtonsoft.Json;

    y lo deserializo de la siguiente forma

    string variable = context.proc_quetraeelJSON_desdeSQL().FirstOrDefault().ToString();
    dynamic datos = JsonConvert.DeserializeObject(variable);

    martes, 6 de noviembre de 2018 20:51
  • Buenas,

    Estoy probando y es raro... he puesto tu Json en un fichero, y a mi si me funciona a las mil maravillas, lo convierte sin problemas, si pones un breakpoint en la linea de datos, y miras el valor de la variable en forma de Json, se te despliega bien el árbol o te da un error?

    Mirar esto se consigue pasando el ratón sobre la variable, y a la derecha de la lupa, tienes una flechita, donde si le das puede seleccionar "Visualizador JSON",

    deberías ver algo como esto:

    Si por el contrario, no se te despliega el arbol, y te dice que el formato del JSON no es correcto, el error viene de antes.

    Quedo a la espera de tu respuesta

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.


    martes, 6 de noviembre de 2018 21:06
  • Cuando lo anterior lo paso a este punto, aparece el error

    byte[] byteArray = Encoding.UTF8.GetBytes(datos); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; WebRequest tRequest = WebRequest.Create("https:paginadeltercero.io/?client_id=usuario&client_secret=password"); tRequest.Method = "Post"; tRequest.ContentType = "application/json"; tRequest.Timeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["timeout"].ToString()); tRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; using (Stream dataStream = tRequest.GetRequestStream()) { dataStream.Write(byteArray, 0, byteArray.Length); using (WebResponse tResponse = tRequest.GetResponse()) { using (Stream dataStreamResponse = tResponse.GetResponseStream()) { using (StreamReader tReader = new StreamReader(dataStreamResponse)) { var objText = tReader.ReadToEnd(); myojb = (ResponseObject)serializer.Deserialize(objText, typeof(ResponseObject)); } } } } } /************************************/ }



    martes, 6 de noviembre de 2018 21:12
  • Pero donde te da el error? al serializar o al deserializar? ese código que has puesto no tiene que ver con el que veiamos...

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    martes, 6 de noviembre de 2018 21:25
  • El Json es válido. Revisa tu objeto ResponseObject que sea un objeto correcto para la deserializacion. Puedes generar lo yendo a Edit/Paste/Paste special/paste Json as classes

    Con esta opción generas una clases c# válidas para la deserializacion


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 6 de noviembre de 2018 21:29
    Moderador
  • Al llegar de este punto

    dynamic datos = JsonConvert.DeserializeObject(variable);

    a este

    byte[] byteArray = Encoding.UTF8.GetBytes(datos);

    ya que no permite colocarle una variable dynamic solo me deja colocarle la variable cuando es string.

    ejemplo asi:

    string variable = context.proc_quetraeelJSON_desdeSQL().FirstOrDefault().ToString();

    byte[] byteArray = Encoding.UTF8.GetBytes(variable);


    pero esto ultimo no es el formato por lo mismo tambien me aparece error

    martes, 6 de noviembre de 2018 21:29
  • Claro, 

    Estas mezclando manzanas con coches, no puedes hacerlo...

    Por un lado, si lo que quieres es deserializar el json, el resultado va a ser un objeto con todas las propiedades del json, no un string, no puedes hacer un Encoding.GetBytes, ya que esto espera un string como entrada.

    Si lo que quieres es convertir tu clase a byte[], te dejo un enlace sobre como hacerlo

    Convert any object to a byte[]

    Con todo esto, entiendo que el proceso correcto para que funcione, es pasar el json original por el deserializador, y convertir ese objeto a byte[] mediante alguno de los métodos del enlace, y ser ese byte[] el que usas más adelante, pero si alteras el Json, no va a ser capaz de leerlo...

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    miércoles, 7 de noviembre de 2018 11:47
  • Entonces con esto que me dices

    "Con todo esto, entiendo que el proceso correcto para que funcione, es pasar el json original por el deserializador, y convertir ese objeto a byte[] mediante alguno de los métodos del enlace, y ser ese byte[] el que usas más adelante, pero si alteras el Json, no va a ser capaz de leerlo..."

    Estoy bien encaminado, solo debo convertirlo a byte...no?

    Pero debo convertir las clases, no el json en sí?

    "Si lo que quieres es convertir tu clase a byte[], te dejo un enlace sobre como hacerlo"

    miércoles, 7 de noviembre de 2018 12:10
  • Hola, el contenido del body del POST que está enviando es correcto que se envíe de esa forma, generando un byte[] del json a enviar no de la variable datos que has definido como dynamic.

    string variable = context.proc_quetraeelJSON_desdeSQL().FirstOrDefault().ToString();
    
    byte[] byteArray = Encoding.UTF8.GetBytes(variable);
    
    
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    
    WebRequest tRequest = WebRequest.Create("https:paginadeltercero.io/?client_id=usuario&client_secret=password");
    tRequest.Method = "Post";
    tRequest.ContentType = "application/json";
    
    tRequest.Timeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["timeout"].ToString());
    tRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
    
    using(Stream dataStream = tRequest.GetRequestStream()) {
     dataStream.Write(byteArray, 0, byteArray.Length);
    
     using(WebResponse tResponse = tRequest.GetResponse()) {
      using(Stream dataStreamResponse = tResponse.GetResponseStream()) {
       using(StreamReader tReader = new StreamReader(dataStreamResponse)) {
        var objText = tReader.ReadToEnd();
    
        myojb = (ResponseObject) serializer.Deserialize(objText, typeof(ResponseObject));
       }
      }
     }
    }
    }
    /************************************/
    
    }


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 7 de noviembre de 2018 12:10
    Moderador
  • Verifica si la codificación UTF8 es requerida por el sistema externo. Puede haber errores por ello.

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 7 de noviembre de 2018 12:12
    Moderador
  • Hola Sergio,

    Me indicas que no debo deserializarlo?

    miércoles, 7 de noviembre de 2018 12:13
  • Exacto.

    Puedes mostrarnos el valor de variable ?


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    miércoles, 7 de noviembre de 2018 12:16
    Moderador
  • Sip, este valor me da

    "{\"Header\":{\"SistemaOrigen\":\"CHIMOK\",\"FechaHora\":\"2018-10-25T17:59:09.210\",\"Funcionalidad\":\"Subscribe\",\"CodSistema\":\"CHIMOK\",\"IdPeticion\":\"432w-6dwe4-5df2\"},\"Body\":{\"DatosVenta\":{\"MetodoPago\":\"Efectivo\",\"NroSuministro\":\"123456789\",\"CodVendedor\":\"juan123\",\"CanalVentaUsuario\":1,\"CanalVentaVendedor\":1,\"UnidadVentaUsuario\":\"3\",\"UnidadVentaVendedor\":\"datoprueba\"},\"Contratante\":{\"TipoDocumento\":\"RUT\",\"NroDocumento\":\"123456789\",\"FechaNacimiento\":\"1988-10-30T16:17:42Z\",\"Nombre\":\"NombreUsuario\",\"PrimerApellido\":\"ApellidoUsuario\",\"TelefonoPrincipal\":\"987654321\",\"Pais\":\"CH\",\"Direccion\":\"SERRANO 1350 C\\/ 47\",\"Estado\":\"Metropolitana de Santiago\",\"Provincia\":\"QUILICURA\"},\"Producto\":{\"Contrato\":\"1\",\"ProductoAsociado\":\"10\",\"TotalBeneficiarios\":2,\"ListaBeneficiarios\":[{\"Nombre\":\"NombreBeneficiario\",\"PrimerApellido\":\"ApellidoBeneficiario\",\"Parentesco\":\"Padre\",\"PorcentajeParticip\":\"3.20\",\"FechaNacimiento\":\"2018-10-30T02:06:15Z\",\"Genero\":\"Hombre\",\"TipoDocumento\":\"DNI\",\"NroDocumento\":\"123456789\",\"Nacionalidad\":\"Chilena\"},{\"Nombre\":\"NombreBeneficiario2\",\"PrimerApellido\":\"ApellidoBeneficiario2\",\"Parentesco\":\"Madre\",\"PorcentajeParticip\":\"13.20\",\"FechaNacimiento\":\"2018-10-30T02:06:15Z\",\"Genero\":\"Mujer\",\"TipoDocumento\":\"DNI\",\"NroDocumento\":\"123456790\",\"Nacionalidad\":\"Chilena\"}],\"TotalAfiliados\":2,\"ListaAfiliados\":[{\"Nombre\":\"NombreAfiliados\",\"PrimerApellido\":\"ApellidoAfiliados\",\"SegundoApellido\":\"\",\"Email\":\"\",\"TelefonoPrincipal\":\"\",\"TelefonoAdicional\":\"\",\"TelefonoMovil\":\"\",\"Parentesco\":\"Padre\",\"FechaNacimiento\":\"2018-10-31T10:44:34Z\",\"Genero\":\"Hombre\",\"TipoDocumento\":\"Rut\",\"NroDocumento\":\"123456789\",\"Direccion\":\"\",\"Estado\":\"\",\"Provincia\":\"\",\"Localidad\":\"\",\"ZipCode\":\"\",\"Nacionalidad\":\"Chilena\",\"EmpresaAnterior\":\"\",\"FecContEmpresaAnt\":\"2018-10-31T10:44:34Z\",\"FechaEntradaEA\":\"2018-10-31T10:44:34Z\",\"esAfiliadoSecundario\":true}]}}}"

    miércoles, 7 de noviembre de 2018 12:20
  • Prueba mi modificación y nos comentas. Un saludo

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 7 de noviembre de 2018 12:25
    Moderador
  • Prueba mi modificación y nos comentas. Un saludo

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    Cual modificación?
    miércoles, 7 de noviembre de 2018 12:27
  • Lo que puse en negrita en el codigo

    string variable = context.proc_quetraeelJSON_desdeSQL().FirstOrDefault().ToString();
    
    byte[] byteArray = Encoding.UTF8.GetBytes(variable);
    


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 7 de noviembre de 2018 12:28
    Moderador
  • Lo he intentado de esa forma pero me aparece error en la linea en negrita:

    using (Stream dataStream = tRequest.GetRequestStream())
                        {
                            dataStream.Write(byteArray, 0, byteArray.Length);
    
                            using (WebResponse tResponse = tRequest.GetResponse())
                            {
                                using (Stream dataStreamResponse = tResponse.GetResponseStream())
                                {
                                    using (StreamReader tReader = new StreamReader(dataStreamResponse))
                                    {
                                        var objText = tReader.ReadToEnd();
    
                                        myojb = (ResponseObject)serializer.Deserialize(objText, typeof(ResponseObject));
                                    }
                                }
                            }
                        }

    miércoles, 7 de noviembre de 2018 12:35
  • Hola, Puedes ser más específico? Es necesario que se aporte toda la información posible. Cuál es el detalle del error? Un saludo

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 7 de noviembre de 2018 12:37
    Moderador
  • Hola, Puedes ser más específico? Es necesario que se aporte toda la información posible. Cuál es el detalle del error? Un saludo

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    Este es el error que me aparece:

    {"Message":"Error.","ExceptionMessage":"Unexpected character encountered while parsing value: R. Path '', line 0, position 0.","ExceptionType":"Newtonsoft.Json.JsonReaderException","StackTrace":"   en Newtonsoft.Json.JsonTextReader.ParseValue()\r\n   en Newtonsoft.Json.JsonTextReader.Read()\r\n   en Newtonsoft.Json.Linq.JToken.ReadFrom(JsonReader reader, JsonLoadSettings settings)\r\n   en Newtonsoft.Json.Linq.JToken.Parse(String json, JsonLoadSettings settings)\r\n   en Newtonsoft.Json.Linq.JToken.Parse(String json)\r\n   en webapiCallsouth.Controllers.AltaRequestController.Window_Loaded() en C:\\Users\\juan.ahumada\\Desktop\\webapiCallsouth\\webapiCallsouth\\Controllers\\AltaRequestController.cs:línea 189\r\n   en lambda_method(Closure , Object , Object[] )\r\n   en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.<GetExecutor>b__3(Object instance, Object[] methodParameters)\r\n   en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)\r\n   en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---\r\n   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   en System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---\r\n   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   en System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---\r\n   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   en System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"}


    miércoles, 7 de noviembre de 2018 12:39
  • Ok, eso puede ser un mensaje de error NO controlado por parte del servicio externo. De ahí mi comentario sobre la línea

    byte[] byteArray = Encoding.UTF8.GetBytes(variable);

    Te recomiendo uses un programa como puede ser Fiddler para tracear lo que se envía al servicio externo. Para validar si el JSON que se manda por POST es correcto o no a causa de la codificación. 

    De todas formas te mando un ejemplo de uso de HttpClient para enviar peticiones.

    using(HttpClient client = new HttpClient()) { var content = new StringContent(variable); content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); using (var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, url) { Content = content }) { var result = await client.SendAsync(httpRequestMessage); if (result.IsSuccessStatusCode) { // TODO: Error controlado } } }



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 7 de noviembre de 2018 12:47
    Moderador
  • Si utilizo fiddler, de hecho me aparece:

    {"Error en el servidor remoto: (500) Error interno del servidor."}

    Pero como es generico le hice lo siguiente:

    catch (WebException wex)
                {
                    if (wex.Response != null)
                    {
                        using (var errorResponse = (HttpWebResponse)wex.Response)
                        {
                            using (var reader = new StreamReader(errorResponse.GetResponseStream()))
                            {
                                // TODO: use JSON.net to parse this string and look at the error message
                                var objText = reader.ReadToEnd();
                                
                                
                                JToken jso = JToken.Parse(objText);
                                
                                respuestaHttp = new HttpResponseMessage(HttpStatusCode.BadRequest);
                                respuestaHttp.Content = new StringContent(objText);
                                return respuestaHttp;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    respuestaHttp = new HttpResponseMessage(HttpStatusCode.BadRequest);
                    respuestaHttp.Content = new StringContent(ex.Message);
                    return respuestaHttp;
                }
    
                respuestaHttp = new HttpResponseMessage(HttpStatusCode.OK);
                //respuestaHttp.Content = new StringContent();
                return respuestaHttp;
    
            }
        }

    Y con esto me muestra el error que te indique mas arriba

    miércoles, 7 de noviembre de 2018 12:51
  • Si utilizo fiddler, de hecho me aparece:

    {"Error en el servidor remoto: (500) Error interno del servidor."}

    Pero como es generico le hice lo siguiente:

    catch (WebException wex)
                {
                    if (wex.Response != null)
                    {
                        using (var errorResponse = (HttpWebResponse)wex.Response)
                        {
                            using (var reader = new StreamReader(errorResponse.GetResponseStream()))
                            {
                                // TODO: use JSON.net to parse this string and look at the error message
                                var objText = reader.ReadToEnd();
                                
                                
                                JToken jso = JToken.Parse(objText);
                                
                                respuestaHttp = new HttpResponseMessage(HttpStatusCode.BadRequest);
                                respuestaHttp.Content = new StringContent(objText);
                                return respuestaHttp;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    respuestaHttp = new HttpResponseMessage(HttpStatusCode.BadRequest);
                    respuestaHttp.Content = new StringContent(ex.Message);
                    return respuestaHttp;
                }
    
                respuestaHttp = new HttpResponseMessage(HttpStatusCode.OK);
                //respuestaHttp.Content = new StringContent();
                return respuestaHttp;
    
            }
        }

    Y con esto me muestra el error que te indique mas arriba

    Este código es tuyo? 

    Pon un punto de ruptura en 

    JToken jso = JToken.Parse(objText);

    Seguro que objText NO es un JSON (puede ser un HTML) y el parseo no se puede realizar y ES AHÍ DONDE SE PRODUCE LA EXCEPCION


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    miércoles, 7 de noviembre de 2018 12:53
    Moderador
  • Entonces aquí veo dos problemas:

    1.- El servicio externo falla a realizar la petición. Puedes mostrar el Body de la petición que estás enviando con el Fiddler? GRacias

    2.- El error que te devuelve el servicio externo NO es un formato JSON y generas por tu lado una excepción al parsear la respuesta


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    miércoles, 7 de noviembre de 2018 12:56
    Moderador
  • Si utilizo fiddler, de hecho me aparece:

    {"Error en el servidor remoto: (500) Error interno del servidor."}

    Pero como es generico le hice lo siguiente:

    catch (WebException wex)
                {
                    if (wex.Response != null)
                    {
                        using (var errorResponse = (HttpWebResponse)wex.Response)
                        {
                            using (var reader = new StreamReader(errorResponse.GetResponseStream()))
                            {
                                // TODO: use JSON.net to parse this string and look at the error message
                                var objText = reader.ReadToEnd();
                                
                                
                                JToken jso = JToken.Parse(objText);
                                
                                respuestaHttp = new HttpResponseMessage(HttpStatusCode.BadRequest);
                                respuestaHttp.Content = new StringContent(objText);
                                return respuestaHttp;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    respuestaHttp = new HttpResponseMessage(HttpStatusCode.BadRequest);
                    respuestaHttp.Content = new StringContent(ex.Message);
                    return respuestaHttp;
                }
    
                respuestaHttp = new HttpResponseMessage(HttpStatusCode.OK);
                //respuestaHttp.Content = new StringContent();
                return respuestaHttp;
    
            }
        }

    Y con esto me muestra el error que te indique mas arriba

    Este código es tuyo? 

    Pon un punto de ruptura en 

    JToken jso = JToken.Parse(objText);

    Seguro que objText NO es un JSON (puede ser un HTML) y el parseo no se puede realizar y ES AHÍ DONDE SE PRODUCE LA EXCEPCION


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    Bueno mio, mio asi como mio....bueno...jeje

    al colocarle el punto de interruopcion donde me indicas me aparece esto

    Newtonsoft.Json.JsonReaderException: 'Unexpected character encountered while parsing value: R. Path '', line 0, position 0.'


    miércoles, 7 de noviembre de 2018 12:59
  • Entonces aquí veo dos problemas:

    1.- El servicio externo falla a realizar la petición. Puedes mostrar el Body de la petición que estás enviando con el Fiddler? GRacias

    2.- El error que te devuelve el servicio externo NO es un formato JSON y generas por tu lado una excepción al parsear la respuesta


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    Este es el Json que envío:

    {
       "Header": {
          "SistemaOrigen": "ORIGEN",
          "FechaHora": "2018-10-25T17:59:09.210",
          "Funcionalidad": "Funcionalidad",
          "CodSistema": "CodSistema",
          "IdPeticion": "432w-6dwe4-5df2"
       },
       "Body": {
          "DatosVenta": {
             "MetodoPago": "Efectivo",
             "NroSuministro": "123456789",
             "CodVendedor": "juan123",
             "CanalVentaUsuario": 1,
             "CanalVentaVendedor": 1,
             "UnidadVentaUsuario": "3",
             "UnidadVentaVendedor": "datoprueba"
          },
          "Contratante": {
             "TipoDocumento": "RUT",
             "NroDocumento": "123456789",
             "FechaNacimiento": "1988-10-30T16:17:42Z",
             "Nombre": "NombreUsuario",
             "PrimerApellido": "ApellidoUsuario",
             "TelefonoPrincipal": "987654321",
             "Pais": "CH",
             "Direccion": "SERRANO 1350 C/ 47",
             "Estado": "Metropolitana de Santiago",
             "Provincia": "QUILICURA"
          },
          "Producto": {
             "Contrato": "1",
             "ProductoAsociado": "10",
             "TotalBeneficiarios": 2,
             "ListaBeneficiarios": [
                {
                   "Nombre": "NombreBeneficiario",
                   "PrimerApellido": "ApellidoBeneficiario",
                   "Parentesco": "Padre",
                   "PorcentajeParticip": "3.20",
                   "FechaNacimiento": "2018-10-30T02:06:15Z",
                   "Genero": "Hombre",
                   "TipoDocumento": "DNI",
                   "NroDocumento": "123456789",
                   "Nacionalidad": "Chilena"
                },
                {
                   "Nombre": "NombreBeneficiario2",
                   "PrimerApellido": "ApellidoBeneficiario2",
                   "Parentesco": "Madre",
                   "PorcentajeParticip": "13.20",
                   "FechaNacimiento": "2018-10-30T02:06:15Z",
                   "Genero": "Mujer",
                   "TipoDocumento": "DNI",
                   "NroDocumento": "123456790",
                   "Nacionalidad": "Chilena"
                }
             ],
             "TotalAfiliados": 2,
             "ListaAfiliados": [
                {
                   "Nombre": "NombreAfiliados",
                   "PrimerApellido": "ApellidoAfiliados",
                   "SegundoApellido": "",
                   "Email": "",
                   "TelefonoPrincipal": "",
                   "TelefonoAdicional": "",
                   "TelefonoMovil": "",
                   "Parentesco": "Padre",
                   "FechaNacimiento": "2018-10-31T10:44:34Z",
                   "Genero": "Hombre",
                   "TipoDocumento": "Rut",
                   "NroDocumento": "123456789",
                   "Direccion": "",
                   "Estado": "",
                   "Provincia": "",
                   "Localidad": "",
                   "ZipCode": "",
                   "Nacionalidad": "Chilena",
                   "EmpresaAnterior": "",
                   "FecContEmpresaAnt": "2018-10-31T10:44:34Z",
                   "FechaEntradaEA": "2018-10-31T10:44:34Z",
                   "esAfiliadoSecundario": true
                }
             ]
          }
       }
    }

    Pero ahora me aparece este error:

    Unexpected character encountered while parsing value: C. Path '', line 0, position 0.

    miércoles, 7 de noviembre de 2018 13:09
  • Hola. Prueba a enviar esa petición vía por ejemplo Postman o Fiddler. Así nos aseguramos si el error es del servicio externo. 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    miércoles, 7 de noviembre de 2018 13:31
    Moderador
  • Si lo hice por fiddler, pero ahora me aparece error
    Response code 500 mapped as failure.


    miércoles, 7 de noviembre de 2018 15:56
  • O sea que el error es del sistema externo? 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 7 de noviembre de 2018 16:16
    Moderador
  • O sea que el error es del sistema externo? 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    Eso no se como diferenciarlo(sorry), pero el Json es el que coloque mas arriba me aparecieron unas variables con error que no estaba enviando y ya las corregi porque eran obligatorias y volvi al f*** error 500 y a esto:

    "ExceptionMessage":"Unexpectedcharacterencounteredwhileparsingvalue:R.Path'',line0,position0."


    miércoles, 7 de noviembre de 2018 16:21
  • Hola, no sé si me he explicado bien. Haz una prueba enviando tu Json al sistema externo usando Fiddler y/o Postman. Examina el resultado. Es correcto? Te devuelve una excepción o mensaje de error? Básicamente es descartar que el fallo en principio esté en tu código

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 7 de noviembre de 2018 16:34
    Moderador
  • Hola, no sé si me he explicado bien. Haz una prueba enviando tu Json al sistema externo usando Fiddler y/o Postman. Examina el resultado. Es correcto? Te devuelve una excepción o mensaje de error? Básicamente es descartar que el fallo en principio esté en tu código

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    Eso te indicaba, me aparece error 500, mas detalladamente me aparece este error:

    {"Message":"Error.","ExceptionMessage":"Unexpected character encountered while parsing value: R. Path '', line 0, position 0.","ExceptionType":"Newtonsoft.Json.JsonReaderException","StackTrace":"   en Newtonsoft.Json.JsonTextReader.ParseValue()\r\n   en Newtonsoft.Json.JsonTextReader.Read()\r\n   en Newtonsoft.Json.Linq.JToken.ReadFrom(JsonReader reader, JsonLoadSettings settings)\r\n   en Newtonsoft.Json.Linq.JToken.Parse(String json, JsonLoadSettings settings)\r\n   en webapiCallsouth.Controllers.AltaRequestController.Window_Loaded() en C:\\Users\\juan.ahumada\\Desktop\\webapiCallsouth\\webapiCallsouth\\Controllers\\AltaRequestController.cs:línea 190\r\n   en lambda_method(Closure , Object , Object[] )\r\n   en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.<GetExecutor>b__3(Object instance, Object[] methodParameters)\r\n   en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)\r\n   en System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---\r\n   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   en System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---\r\n   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   en System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---\r\n   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   en System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"}

    miércoles, 7 de noviembre de 2018 16:36
  • Hola. Ese Api al que llamas es tuyo? Lo digo porque si tienes el código puedes iniciar una depuración y poner puntos de ruptura en la entrada de la acción del controlador y paso a paso ver donde se produce la excepción 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 7 de noviembre de 2018 18:25
    Moderador
  • Lo digo porque analizando el mensaje aparece 
    C:\\Users\\juan.ahumada\\Desktop\\webapiCallsouth\\webapiCallsouth\\Controllers\\AltaRequestController.cs:línea

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 7 de noviembre de 2018 18:26
    Moderador
  • Hola. Ese Api al que llamas es tuyo? Lo digo porque si tienes el código puedes iniciar una depuración y poner puntos de ruptura en la entrada de la acción del controlador y paso a paso ver donde se produce la excepción 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    Punto de inicio de donde me envia al error, es la linea:

    using (WebResponse tResponse = tRequest.GetResponse())

    miércoles, 7 de noviembre de 2018 18:37
  • Lo digo porque analizando el mensaje aparece 
    C:\\Users\\juan.ahumada\\Desktop\\webapiCallsouth\\webapiCallsouth\\Controllers\\AltaRequestController.cs:línea

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    Esto lo marca asi, porque identifica desde donde sale o emite el error incluso en la linea
    miércoles, 7 de noviembre de 2018 18:38
  • Deleted
    jueves, 8 de noviembre de 2018 16:57
  • Cuando envias este JSON 

    {
       "Header": {
          "SistemaOrigen": "ORIGEN",
          "FechaHora": "2018-10-25T17:59:09.210",
          "Funcionalidad": "Funcionalidad",
          "CodSistema": "CodSistema",
          "IdPeticion": "432w-6dwe4-5df2"
       },
       "Body": {
          "DatosVenta": {
             "MetodoPago": "Efectivo",
             "NroSuministro": "123456789",
             "CodVendedor": "juan123",
             "CanalVentaUsuario": 1,
             "CanalVentaVendedor": 1,
             "UnidadVentaUsuario": "3",
             "UnidadVentaVendedor": "datoprueba"
          },
          "Contratante": {
             "TipoDocumento": "RUT",
             "NroDocumento": "123456789",
             "FechaNacimiento": "1988-10-30T16:17:42Z",
             "Nombre": "NombreUsuario",
             "PrimerApellido": "ApellidoUsuario",
             "TelefonoPrincipal": "987654321",
             "Pais": "CH",
             "Direccion": "SERRANO 1350 C/ 47",
             "Estado": "Metropolitana de Santiago",
             "Provincia": "QUILICURA"
          },
          "Producto": {
             "Contrato": "1",
             "ProductoAsociado": "10",
             "TotalBeneficiarios": 2,
             "ListaBeneficiarios": [
                {
                   "Nombre": "NombreBeneficiario",
                   "PrimerApellido": "ApellidoBeneficiario",
                   "Parentesco": "Padre",
                   "PorcentajeParticip": "3.20",
                   "FechaNacimiento": "2018-10-30T02:06:15Z",
                   "Genero": "Hombre",
                   "TipoDocumento": "DNI",
                   "NroDocumento": "123456789",
                   "Nacionalidad": "Chilena"
                },
                {
                   "Nombre": "NombreBeneficiario2",
                   "PrimerApellido": "ApellidoBeneficiario2",
                   "Parentesco": "Madre",
                   "PorcentajeParticip": "13.20",
                   "FechaNacimiento": "2018-10-30T02:06:15Z",
                   "Genero": "Mujer",
                   "TipoDocumento": "DNI",
                   "NroDocumento": "123456790",
                   "Nacionalidad": "Chilena"
                }
             ],
             "TotalAfiliados": 2,
             "ListaAfiliados": [
                {
                   "Nombre": "NombreAfiliados",
                   "PrimerApellido": "ApellidoAfiliados",
                   "SegundoApellido": "",
                   "Email": "",
                   "TelefonoPrincipal": "",
                   "TelefonoAdicional": "",
                   "TelefonoMovil": "",
                   "Parentesco": "Padre",
                   "FechaNacimiento": "2018-10-31T10:44:34Z",
                   "Genero": "Hombre",
                   "TipoDocumento": "Rut",
                   "NroDocumento": "123456789",
                   "Direccion": "",
                   "Estado": "",
                   "Provincia": "",
                   "Localidad": "",
                   "ZipCode": "",
                   "Nacionalidad": "Chilena",
                   "EmpresaAnterior": "",
                   "FecContEmpresaAnt": "2018-10-31T10:44:34Z",
                   "FechaEntradaEA": "2018-10-31T10:44:34Z",
                   "esAfiliadoSecundario": true
                }
             ]
          }
       }
    }

    a la url externa  (mediante Fiddler o Postman)

    https:paginadeltercero.io/?client_id=usuario&client_secret=password

    Obtienes algún error? Esa es mi pregunta. 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 8 de noviembre de 2018 17:03
    Moderador
  • Si amigo este es el error

    Response code 500 mapped as failure.

    jueves, 8 de noviembre de 2018 18:29
  • Pues entonces tendrás que ponerte en contacto con el proveedor de ese servicio para que valide el Json que Le estás enviando. 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 8 de noviembre de 2018 18:34
    Moderador
  • finalmente descubri el problema!!!

    Fue por el EntityFramework!!

    gracias a todos los que me intentaron ayudar

    Saludos

    viernes, 9 de noviembre de 2018 14:59