ASP.NET MVC - Mit cURL oder ähnliches durchführen Anforderungen in der Anwendung
Ich Baue eine Anwendung in ASP.NET MVC (C#) und ich würde gerne wissen, wie ich ausführen können Anrufe wie curl http://www.mywebsite.com/clients_list.xml in meinem controller
Grundsätzlich würde ich gerne bauen, eine Art REST-API zum ausführen von Aktionen wie die anzeigen, Bearbeiten und löschen, wie Twitter-API.
Aber leider bis jetzt ich habe nichts gefunden, außer, dass cURL für windows auf dieser website: http://curl.haxx.se/
Also ich weiß nicht, ob es einen traditionellen Weg zum abrufen dieser Art von aufrufen von URL mit Methoden wie post löschen und setzen Sie auf die Anfragen, etc...
Nur ich würde gerne wissen, eine einfache Möglichkeit zum ausführen von Kommandos wie curl in meinem controller auf meinem ASP.NET MVC-Anwendung.
UPDATE:
Hi also schaffte ich Anfragen BEKOMMEN, aber jetzt ich habe ein ernstes problem in abrufen von POST-Anforderung, zum Beispiel, ich bin über die update-status-API von Twitter ist, dass in curl funktionieren würde wie dieses:
curl -u user:password -d "status=playing with cURL and the Twitter API" http://twitter.com/statuses/update.xml
aber auf meinem ASP.NET MVC-Anwendung, die ich mache, wie dies in meinem benutzerdefinierten Funktion:
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;
Nun das problem ist, dass diese Anforderung ist Rückkehr 403 Forbidden,
Ich weiß wirklich nicht, warum, wenn es funktioniert perfekt auf curl
:\
UPDATE:
Ich endlich geschafft es zum laufen zu bringen, aber wahrscheinlich gibt es einen Weg, um es sauberer und schöner, als ich bin neu in C# ich muss mehr wissen, um es zu tun, die Art und Weise der POST-params übergeben werden, macht mich sehr verwirrt, da ist eine Menge code einfach passieren params.
Gut, ich habe eine Gist - http://gist.github.com/215900 , damit sich jeder fühlen Sie sich frei, ihn zu überarbeiten, wie Sie. Vielen Dank für Ihre Hilfe çağdaş
Folgen auch den code hier ein:
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
*/
}
BTW, es scheint, dass Sie bekommen konnte, einen 403 forbidden-status, wenn Sie erreicht wird ; 1. 1.000 Gesamt-updates pro Tag beschränken. 2. 250 Gesamt direkte Nachrichten pro Tag begrenzen. 3. 150 API-Anfragen pro Stunde zu begrenzen. help.twitter.com/forums/10711/entries/15364
sorry, gut, dass in diesem Fall versuchen, eine Verbindung zu meinem twitter-account von twitter.com/statuses/update.xml, also, wenn Sie versuchen, Zugriff auf diese von Ihrem browser, Sie werden sehen, dass es fragt nach einem Benutzernamen und Passwort die Anmeldeinformationen in diesem Fall wäre mein twitter-account Benutzername und Passwort, die ich dachte, dass wäre das gleiche curl -u username:Passwort ... Also diese Methode würde die Anwendung eine Verbindung zu meinem twitter-account posten Sie eine neue tweet senden der parameter "status"+ Anmeldedaten, und empfangen der Antwort, dass twitter uns zurück senden einer xml-Datei in diesem Fall.
danke, zum Glück ist dieser limit mit twitter wurde nicht erreicht, doch ich kann immer noch tun Sie es über curl rechts jetzt, aber nicht mit c#
Ich konnte nicht finden die Informationen, die den status param geschrieben werden sollte. Denn wenn das in die post-Daten, dann ist dein Beispiel falsch ist. Ich werde noch mein edit beantworten und geben ein Beispiel Buchungsdaten.
InformationsquelleAutor zanona | 2009-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, mithilfe von Microsoft.Http.HttpClient. Dies ist, was Ihre Anfrage würde wie folgt Aussehen
Finden Sie diese Bibliothek und seine Quelle enthalten in der WCF REST Starter kit Preview 2, aber es kann verwendet werden, unabhängig von dem rest von dem Zeug drin.
P. S. getestet habe ich diesen code auf meinen twitter-account und es funktioniert.
Auf meinem Computer, die dll-Datei ist hier C:\Program Files (x86)\Microsoft WCF REST\WCF REST Starter Kit Preview 2\Assemblies. Auch im installer enthalten ist eine zip-Datei, die den Quellcode enthält. Öffnen, und die volle Quelle ist.
InformationsquelleAutor Darrel Miller
Beispiel-code mit HttpWebRequest und HttpWebResponse :
Zur POST-Daten :
InformationsquelleAutor Çağdaş Tekin
Dies ist die einzige Zeile code, den ich Anrufe, um eine RESTful API, JSON zurückgibt.
Hinweise
von der SurveyGizmo-API
Den Kompletten Service
InformationsquelleAutor biofractal
Blick in die System.Net.WebClient Klasse. Es sollte bieten die Funktionalität, die Sie benötigen. Für feinere Kontrolle, die Sie finden können WebRequest, um nützlicher zu sein, aber WebClient scheint die beste Lösung für Ihre Bedürfnisse.
InformationsquelleAutor spender