Ich verwende ein Hardwaregerät und möchte einige Operationen darauf ausführen.So verwenden Sie cURL in ASP.NET mit Cookie-Datei
Gegenwärtig verwendet es cURL, um die Operationen auszuführen. Aber ich möchte das gleiche in ASP.NET Web Forms-Anwendung zu tun, da unten sind die CURL Befehle, die das Gerät verwenden:
1) Zuerst muss ich in einer Cookie-Datei der Benutzerauthentifizierung speichern:
curl -1 -v -L -k -c cookie.txt -d save=2 -d adm_name=admin -d adm_pwd=admin https://10.71.1.111/check.shtml
Dieses Geschäft cookie.txt
10 in meinem Ordner.
2) Jetzt muss ich den zweiten Befehl ausführen, um die Hauptoperation zu tun (Benutzer erstellen in diesem Fall)
curl -1 -v -L -k -b cookie.txt -d save=1 -d U1=michael -d P1=abcd1234 -d M1=00:09:6B:CD:88:00 -d C1=d -d R1=FinanceDep https:// 10.71.1.111/UserAuthentication/AddUser.shtml
Hier schicke ich die cookie.txt
Datei, um den Benutzer zu erstellen. In diesem Befehl sind U1
, P1
, M1
, C1
, R1
die Parameter.
Kann mir jemand helfen, das Gleiche von ASP.NET
Grüße Santanu
EDIT zu tun:
Auf Grundlage der Antwort ich den Code in VB.NET umgewandelt und verwendet es, aber leider ist es noch keinen Fehler geben und in alles zurück Antwort
Dim Glas als neue CookieContainer()
Dim target As New Uri("https://x.x.x.x/check.shtml")
'jar.Add(New Cookie("adm", "admin"))
'jar.Add(New Cookie("admpwd", "6e49b5b6c16eff37c0d8217382fe1c7e"))
'jar.Add(New Cookie("first_login_home_page", "home.shtml"))
'jar.Add(New Cookie("name", "value"))
jar.Add(New Uri("https://x.x.x.x/check.shtml"), New Cookie("adm", "admin"))
jar.Add(New Uri("https://x.x.x.x/check.shtml"), New Cookie("admpwd", "6e49b5b6c16eff37c0d8217382fe1c7e"))
jar.Add(New Uri("https://x.x.x.x/check.shtml"), New Cookie("first_login_home_page", "home.shtml"))
Dim request As HttpWebRequest = DirectCast(WebRequest.Create("https://x.x.x.x/UserAuthentication/AddUser.shtml"), HttpWebRequest)
request.CookieContainer = jar
request.AllowAutoRedirect = True
' request.ServerCertificateValidationCallback = AddressOf AcceptAllCertifications
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(Function() True)
request.Method = "POST"
Dim fields As New NameValueCollection()
fields.Add("save", "1")
fields.Add("U1", "michael")
fields.Add("P1", "abcd1234")
fields.Add("C1", "1")
fields.Add("R1", "FinanceDep")
Using requestBody As Stream = request.GetRequestStream()
Using wtr As New StreamWriter(requestBody, Encoding.ASCII)
Dim first As [Boolean] = True
For Each key As [String] In fields.Keys
If Not first Then
wtr.Write("&"c)
End If
Dim keyEnc As [String] = HttpUtility.UrlEncode(key)
Dim valEnc As [String] = HttpUtility.UrlEncode(fields(key))
wtr.Write(keyEnc)
wtr.Write("="c)
wtr.Write(valEnc)
first = False
Next
End Using
End Using
Dim response As HttpWebResponse = Nothing
Try
response = request.GetResponse()
Catch wex As WebException
If wex.Response IsNot Nothing Then
response = wex.Response
End If
End Try
Lieber Dai, Danke für Ihre Lösung, ich habe zwei Zweifel 1) Sie senden diese Anfrage an https://10.71.1.111/check.shtml von wo bekomme ich die Authentifizierung, aber nicht auf https: // 10.71. 1.111/UserAuthentication/AddUser.shtml, wo das Gerät den Benutzer tatsächlich erstellt. Werde ich direkt auf https: // 10.71.1.111/UserAuthentication/AddUser.shtml feuern 2) wenn ich direkt auf https: // 10.71.1.111/UserAuthentication/AddUser.shtml fire dann wie wird es das Cookie bekommen oder es wird automatisch erstellt es. Es tut mir wirklich leid, dass ich dich danach gefragt habe, aber ich bin neu und frage dasselbe. –
I Tyied den obigen Code, aber es funktioniert nicht auf Antwort = request.GetResponse(); seine Rückkehr NULL –
@SantanuDas 'GetResponse' gibt nie Null zurück, es löst eine Ausnahme aus, wenn ein Fehler auftritt. Debuggen Sie Ihren Code und beobachten Sie alle ausgelösten Ausnahmen. – Dai