restclient net example c# http-headers restsharp

c# - net - Establecer el encabezado ''Content-Type'' usando RestSharp



restsharp web api c# (5)

Estoy construyendo un cliente para un servicio de lectura RSS. Estoy usando la biblioteca RestSharp para interactuar con su API.

Los estados de la API:

Al crear o actualizar un registro, debe establecer application / json; charset = utf-8 como el encabezado Content-Type.

Así es como se ve mi código:

RestRequest request = new RestRequest("/v2/starred_entries.json", Method.POST); request.AddHeader("Content-Type", "application/json; charset=utf-8"); request.RequestFormat = DataFormat.Json; request.AddParameter("starred_entries", id); //Pass the request to the RestSharp client Messagebox.Show(rest.ExecuteAsPost(request, "POST").Content);

Sin embargo; el servicio está devolviendo "Error 415: Utilice el encabezado ''Content-Type: application / json; charset = utf-8''". ¿Por qué RestSharp no está pasando el encabezado?


Aquí está la solución

http://restsharp.blogspot.ca/

Cree un objeto json con las mismas propiedades de nombre y establezca los valores (asegúrese de que sean similares a los del par de valores de nombre para la solicitud posterior).

Después de eso, use httpclient por defecto.


Aunque esto es un poco antiguo: me encontré con el mismo problema ... parece que algunos atributos como "tipo de contenido" o "fecha" no se pueden agregar como parámetro, pero se agregan internamente. Para modificar el valor de "tipo de contenido" tuve que cambiar la configuración del serialzer (¡aunque no lo usé porque agregué un json en el cuerpo que fue serializado antes!)

RestClient client = new RestClient(requURI); RestRequest request = new RestRequest(reqPath, method); request.JsonSerializer.ContentType = "application/json; charset=utf-8";

Tan pronto como hice esto, el encabezado apareció como estaba previsto:

System.Net Information: 0 : [5620] ConnectStream#61150033 - Header { Accept: application/json, application/xml, text/json, text/x-json, text/javascript, text/xml User-Agent: RestSharp 104.1.0.0 Content-Type: application/json; charset=utf-8 ... }


En la versión 105.2.3.0 puedo resolver el problema de esta manera:

var client = new RestClient("https://www.example.com"); var request = new RestRequest("api/v1/records", Method.POST); request.AddJsonBody(new { id = 1, name = "record 1" }); var response = client.Execute(request);

Antigua pregunta, pero sigue siendo lo más importante de mi búsqueda, agregando para completar.


La solución provista en mi blog no se ha probado más allá de la versión 1.02 de RestSharp. Si envía un comentario sobre mi respuesta con su problema específico con mi solución, puedo actualizarlo.

var client = new RestClient("http://www.example.com/where/else?key=value"); var request = new RestRequest(); request.Method = Method.POST; request.AddHeader("Accept", "application/json"); request.Parameters.Clear(); request.AddParameter("application/json", strJSONContent, ParameterType.RequestBody); var response = client.Execute(request);