Wir haben diese Software, die eine Webservices-Komponente hat.
Jetzt ist der Administrator dieses Systems zu mir gekommen und möchte mithilfe der Webservices-Komponente Daten in das System importieren.
Also habe ich die Dokumentation gelesen, um herauszufinden, was passiert, und ich sehe solche Dinge:
Diese Dokumentation enthält Beispiele für die Interaktion mit dem System mithilfe von HTTP-Verben wie GET, POST, PUT, DELETE. Nach meiner begrenzten Erfahrung musste ich jedoch weder einen HTTP-PUT noch einen DELETE senden.
Wie machst du das? Ich habe HTML-Formulare mit method = "post" oder method = "get" erstellt und die Anforderung wird an alles gesendet, was im Aktionsattribut angegeben ist (action = "someResource"). Aber ich weiß nicht wirklich, was ich mit dieser PUT-Sache anfangen soll.
Wenn ich raten müsste, müsste ich eine Anwendung erstellen, die eine Art HTTP-Anforderungsobjekt erstellt, alle Eigenschaften festlegt und die Daten, die ich in die RESOURCE (
Ich dachte, ich wäre ein Webentwickler, da ich Dinge wie XHTML, CSS, JavaScript usw. kenne, aber es sieht so aus, als wüsste ich überhaupt nichts über die Grundlagen des Webs (HTTP).
BEARBEITEN
PS: Ich programmiere hauptsächlich mit .net. Alle Beispiele in .net wären also ziemlich großartig.
Antworten:
Hier ist ein C # -Beispiel mit HttpWebRequest:
using System; using System.IO; using System.Net; class Test { static void Main() { string xml = "<xml>...</xml>"; byte[] arr = System.Text.Encoding.UTF8.GetBytes(xml); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/"); request.Method = "PUT"; request.ContentType = "text/xml"; request.ContentLength = arr.Length; Stream dataStream = request.GetRequestStream(); dataStream.Write(arr, 0, arr.Length); dataStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string returnString = response.StatusCode.ToString(); Console.WriteLine(returnString); } }
Update : Es gibt jetzt eine HttpClient-Klasse in System.Net.Http ( verfügbar als NuGet-Paket ), die dies etwas einfacher macht:
using System; using System.Net.Http; class Program { static void Main() { var client = new HttpClient(); var content = new StringContent("<xml>...</xml>"); var response = client.PutAsync("http://localhost/", content).Result; Console.WriteLine(response.StatusCode); } }
quelle
Für PUT und DELETE müssen Sie wahrscheinlich AJAX verwenden und XMLHttpRequests erstellen, da das FORM-Tag nur GET- und POST-Verben unterstützt und Links nur GET-Anforderungen stellen.
Mit jQuery:
Der Hinweis auf der Seite mit den jQuery Ajax-Optionen warnt, dass einige Browser PUT und DELETE für den Anforderungstyp nicht unterstützen. FWIW, ich habe noch nie PUT verwendet, aber DELETE in IE und FF verwendet. Nicht in Safari oder Opera getestet.
quelle
So geht's in CURL: So verwenden Sie cURL zum Testen von RESTful Rails
Oder ... Sie können definitiv ein HTML-Formular verwenden. Wenn die App wirklich REST-fähig ist, versteht sie die REST-Aktionen und lässt Sie nur bestimmte Aktionen basierend auf der von Ihnen verwendeten Methode ausführen.
quelle
Sie können kein HTML-Formular verwenden (die Spezifikation definiert nur GET / POST für Formulare).
Jede HTTP-API sollte Ihnen jedoch das PUT ermöglichen, genauso wie das GET oder POST. Hier ist beispielsweise die Java HTTPClient-Dokumentation , in der PUT neben allen anderen HTTP-Verben aufgeführt ist.
Ich weiß nicht, welche Sprache Sie verwenden, aber ich denke, es wird ziemlich trivial sein, eine App zu schreiben, um einen HTTP-PUT durchzuführen.
quelle
Ich fand diese wirklich coole kostenlose Software namens RESTClient .
Sie können mit verschiedenen Verben mit HTTP-Ressourcen interagieren, Header und Text manuell festlegen, Authentifizierungsinformationen, SSL festlegen, Testskripte ausführen usw.
Dies wird mir helfen, herauszufinden, wie ich mit unserer "Webservices" -Software interagieren kann, die eigentlich nur eine RESTful-API für die Datenbank der Software ist.
quelle
Testen Sie die API als Chrome-Erweiterung https://chrome.google.com/webstore/detail/fdmmgilgnpjigdojojpjoooidkmcomcm
quelle
Hier ist ein Tool, mit dem Sie Drag & Drop in PUT-Dateien ziehen können
quelle
"Jetzt ist der Administrator dieses Systems zu mir gekommen und möchte mithilfe der Webservices-Komponente Daten in das System importieren."
Webdienste haben wenig mit HTML-Formularen zu tun.
Webdienstanforderungen werden entweder über Javascript (z. B. als Ajax) oder über Ihre Anwendungsprogramme ausgeführt.
Sie würden ein C # - oder VB-Programm schreiben, das HTTP verwendet, um einen Put an die angegebene Webdienst-URL mit dem angegebenen Datensatz durchzuführen.
Hier ist zum Beispiel ein Beispiel für einen VB-Code: http://developer.yahoo.com/dotnet/howto-rest_vb.html#post
Ersetzen Sie die Methodenzeichenfolge von "POST" durch "PUT".
quelle
Versuchen Sie es mit libcurl.NET: http://sourceforge.net/projects/libcurl-net/
quelle
Nur ein Headsup, das einige Netzwerkadministratoren aus verschiedenen Gründen blockieren. Daher müssen Sie möglicherweise einen POST anstelle von PUT verwenden. Erkundigen Sie sich bei Ihren Operationen.
quelle
PUT und DELETE sind nicht Teil von HTML4, aber in den HTML5-Spezifikationen enthalten. Aus diesem Grund haben die meisten gängigen Browser keine gute Unterstützung für sie, da sie sich auf HTML4 konzentrieren. Sie sind jedoch definitiv Teil von HTTP und waren es schon immer. Sie führen einen PUT mit einem Nicht-Browser-Client oder mit einem Formular in einem HTML5-fähigen Browser durch.
Update: PUT und DELETE sind nicht mehr Teil von HTML5 für Formulare. Siehe: http://www.w3.org/TR/html5/association-of-controls-and-forms.html#attr-fs-method
quelle