Estoy creando una aplicación en ASP.NET MVC (usando C#) y me gustaría saber cómo puedo realizar llamadas como curl http://www.mywebsite.com/clients_list.xml dentro de mi controlador Básicamente, me gustaría construir un tipo de API REST para realizar acciones como editar y eliminar, como Twitter API.ASP.NET MVC - Uso de cURL o similar para realizar solicitudes en la aplicación
Pero, por desgracia, hasta ahora no he encontrado nada, además de que se curvan para las ventanas en este sitio Web: http://curl.haxx.se/
Así que no sé si hay alguna manera tradicional para recuperar este tipo de llamada de URL con los métodos como publicar eliminar y poner en las solicitudes, etc ...
Sólo me gustaría saber una manera fácil de realizar comandos como curl dentro de mi controlador en mi ASP.NET MVC Application.
ACTUALIZACIÓN:
Hola por lo que logró hacer peticiones GET pero ahora estoy teniendo un problema grave en recuperar la solicitud POST, por ejemplo, estoy usando la API de estado de actualización de Twitter que en rizo funcionaría así:
curl -u user:password -d "status=playing with cURL and the Twitter API" http://twitter.com/statuses/update.xml
pero en mi aplicación ASP.NET MVC que estoy haciendo como esto dentro de mi función personalizada:
string responseText = String.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://twitter.com/statuses/update.xml");
request.Method = "POST";
request.Credentials = new NetworkCredential("username", "password");
request.Headers.Add("status", "Tweeting from ASP.NET MVC C#");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
responseText = sr.ReadToEnd();
}
return responseText;
Ahora el problema es que esta solicitud está regresando 403 Forbidden, Realmente no sé por qué si funciona perfectamente en rizo
: \
ACTUALIZACIÓN:
que finalmente logran para que funcione, pero probablemente haya una manera de hacerlo más limpio y hermoso, ya que soy nuevo en C#, voy a necesitar más conocimiento para hacerlo, la forma en que se pasan los parámetros POST me confunde mucho porque es una gran cantidad de código para simplemente pasar los parámetros.
Bueno, he creado un Gist - http://gist.github.com/215900, por lo que todos pueden revisarlo como lo desee. Gracias por su ayuda çağdaş
también siguen el código aquí:
public string TwitterCurl()
{
//PREVENT RESPONSE 417 - EXPECTATION FAILED
System.Net.ServicePointManager.Expect100Continue = false;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://twitter.com/statuses/update.xml");
request.Method = "POST";
request.Credentials = new NetworkCredential("twitterUsername", "twitterPassword");
//DECLARE POST PARAMS
string headerVars = String.Format("status={0}", "Tweeting from ASP.NET MVC C#");
request.ContentLength = headerVars.Length;
//SEND INFORMATION
using (StreamWriter streamWriter = new StreamWriter(request.GetRequestStream(), ASCIIEncoding.ASCII))
{
streamWriter.Write(headerVars);
streamWriter.Close();
}
//RETRIEVE RESPONSE
string responseText = String.Empty;
using (StreamReader sr = new StreamReader(request.GetResponse().GetResponseStream()))
{
responseText = sr.ReadToEnd();
}
return responseText;
/*
//I'M NOT SURE WHAT THIS IS FOR
request.Timeout = 500000;
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Custom Twitter Agent";
#if USE_PROXY
request.Proxy = new WebProxy("http://localhost:3000", false);
#endif
*/
}
¿Se supone que esos parámetros de nombre de usuario y contraseña son credenciales de red o datos de publicación simple? No conozco la API de Twitter, por lo que sería mejor si explicas qué es exactamente lo que intentas hacer. –
Por cierto, parece que podrías obtener un estado prohibido 403 si llegaste; 1. 1,000 actualizaciones totales por límite de día. 2. 250 mensajes directos totales por límite de día. 3. 150 solicitudes API por límite de horas. http://help.twitter.com/forums/10711/entries/15364 –
lo siento, bueno, en este caso, estoy tratando de conectarme a mi cuenta de Twitter desde http://twitter.com/statuses/update.xml, entonces si intentas acceder a este desde tu navegador verás que pide un nombre de usuario y una contraseña para que las credenciales en este caso sean mi nombre de usuario y contraseña de la cuenta de Twitter, lo que pensé que sería lo mismo de curl -u username: contraseña ... Así que en este método la aplicación se conectaría a mi cuenta de Twitter publicará un nuevo tweet enviando el parámetro "estado" + credenciales, y recuperando la respuesta de que Twitter enviará un archivo xml en este caso. – zanona