Ich möchte curl
in meiner C # -Konsolenanwendung den folgenden Aufruf tätigen :
curl -d "text=This is a block of text" \
http://api.repustate.com/v2/demokey/score.json
Ich habe versucht, die hier gepostete Frage zu mögen , aber ich kann die Eigenschaften nicht richtig ausfüllen.
Ich habe auch versucht, es in eine reguläre HTTP-Anfrage zu konvertieren:
http://api.repustate.com/v2/demokey/score.json?text="This%20is%20a%20block%20of%20text"
Kann ich einen cURL-Aufruf in eine HTTP-Anforderung konvertieren? Wenn das so ist, wie? Wenn nicht, wie kann ich den obigen cURL-Aufruf von meiner C # -Konsolenanwendung aus ordnungsgemäß ausführen?
HttpClient
es jetzt in der Mischung ist und es der Weg sein wird, HTTP-Inhalte zu überarbeitenHttpWebRequest
undWebClient
voranzukommen.Antworten:
Nun, Sie würden cURL nicht direkt aufrufen , sondern eine der folgenden Optionen verwenden:
HttpWebRequest
/.HttpWebResponse
WebClient
HttpClient
(verfügbar ab .NET 4.5)Ich würde die Verwendung der
HttpClient
Klasse wärmstens empfehlen , da sie (unter dem Gesichtspunkt der Benutzerfreundlichkeit) viel besser ist als die beiden vorherigen.In Ihrem Fall würden Sie Folgendes tun:
Beachten Sie auch, dass die
HttpClient
Klasse eine viel bessere Unterstützung für die Behandlung verschiedener Antworttypen und eine bessere Unterstützung für asynchrone Operationen (und deren Abbruch) gegenüber den zuvor genannten Optionen bietet.quelle
Task<T>
, Sie könnenasync
die Rückgabetypen einfach nicht verwenden und dann normal behandeln (Sie müssten sie aufrufenTask<T>.Result
. Beachten Sie jedoch, dass Sie sie besser verwenden sollten,async
da Sie den Thread verschwenden, der auf das Ergebnis wartet.KeyValuePair<string, string>
so würden Sie nur verwendennew [] { new KeyValuePair<string, string>("text", "this is a block of text"), new KeyValuePair<string, string>("activity[verb]", "testVerb") }
curl -k -i -H "Accept: application/json" -H "X-Application: <AppKey>" -X POST -d 'username=<username>&password=<password>' https://identitysso.betfair.com/api/login
Oder in restSharp :
quelle
Unten finden Sie einen funktionierenden Beispielcode.
Bitte beachten Sie, dass Sie einen Verweis auf Newtonsoft.Json.Linq hinzufügen müssen
Referenz: TheDeveloperBlog.com
quelle
Späte Antwort, aber genau das habe ich getan. Wenn Sie Ihre Curl-Befehle sehr ähnlich ausführen möchten, wie Sie sie unter Linux ausführen und Windows 10 oder höher verwenden, gehen Sie folgendermaßen vor:
Der Grund, warum der Code etwas lang ist, liegt darin, dass Windows Ihnen einen Fehler gibt, wenn Sie ein einfaches Anführungszeichen ausführen. Mit anderen Worten, der Befehl
curl 'https://google.com'
funktioniert unter Linux und nicht unter Windows. Dank dieser von mir erstellten Methode können Sie einfache Anführungszeichen verwenden und Ihre Curl-Befehle genau so ausführen, wie Sie sie unter Linux ausführen. Dieser Code prüft auch, ob Zeichen wie\'
und maskiert werden\"
.Verwenden Sie diesen Code beispielsweise als
var output = ExecuteCurl(@"curl 'https://google.com' -H 'Accept: application/json, text/javascript, */*; q=0.01'");
Wenn Sie dieselbe Zeichenfolge erneut ausführen möchten
C:\Windows\System32\curl.exe
, funktioniert dies nicht, da Windows aus irgendeinem Grund keine einfachen Anführungszeichen mag.quelle
Ich weiß, dass dies eine sehr alte Frage ist, aber ich poste diese Lösung für den Fall, dass sie jemandem hilft. Ich bin kürzlich auf dieses Problem gestoßen und Google hat mich hierher geführt. Die Antwort hier hilft mir, das Problem zu verstehen, aber es gibt immer noch Probleme aufgrund meiner Parameterkombination. Was mein Problem schließlich löst, ist Curl to C # -Konverter . Es ist ein sehr leistungsfähiges Werkzeug und unterstützt die meisten Parameter für Curl. Der generierte Code kann fast sofort ausgeführt werden.
quelle
Das Aufrufen von cURL über Ihre Konsolen-App ist keine gute Idee.
Sie können jedoch TinyRestClient verwenden , um das Erstellen von Anforderungen zu vereinfachen:
quelle
Nun, wenn Sie neu in C # mit cmd-line exp sind. Sie können Online-Sites wie " https://curl.olsh.me/ " verwenden oder "Curl to C # Converter" suchen, um eine Site zurückzugeben, die dies für Sie tun könnte.
oder wenn Sie Postman verwenden, können Sie Code-Snippet generieren verwenden. Das einzige Problem mit dem Postman-Code-Generator ist die Abhängigkeit von der RestSharp-Bibliothek.
quelle