Я создаю приложение в ASP.NET MVC (используя C #), и я хотел бы знать, как я могу выполнять вызовы типа curl http://www.mywebsite.com/clients_list.xml внутри моего контроллера
По сути, я хотел бы создать своего рода REST API для выполнения таких действий, как show edit и delete, таких как Twitter API.
Но, к сожалению, до сих пор я не нашел ничего, кроме этого cURL для Windows на этом сайте: http://curl.haxx.se/
Так что я не знаю, существует ли какой-либо традиционный способ извлечения такого рода звонков из URL с помощью таких методов, как удаление записей и добавление запросов и т. Д. *
Я просто хотел бы знать простой способ выполнения таких команд, как curl, внутри моего контроллера в моем приложении ASP.NET MVC.
UPDATE:
Привет, поэтому мне удалось сделать GET-запросы, но теперь у меня возникла серьезная проблема при получении POST-запроса, например, я использую API состояния обновления из Twitter, который в curl будет работать так:
curl -u user:password -d "status=playing with cURL and the Twitter API" http://twitter.com/statuses/update.xml
но в моем приложении ASP.NET MVC я делаю так внутри своей пользовательской функции:
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;
Теперь проблема в том, что этот запрос возвращает 403 Запрещено,
Я действительно не знаю почему, если он отлично работает на curl
: \
UPDATE:
Мне, наконец, удается заставить его работать, но, возможно, есть способ сделать его чище и красивее, поскольку я новичок в C #, мне понадобятся дополнительные знания, чтобы сделать это, способ передачи параметров POST делает меня очень сбит с толку, потому что много кода просто для передачи параметров.
Ну, я создал Gist - http://gist.github.com/215900, так что каждый может смело пересматривать его по своему усмотрению. Спасибо за помощь çağdaş
также следуйте коду здесь:
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
*/
}