it-swarm.com.de

Wie machst du einen HTTP Put?

Wir haben diese Software mit einer Webservices-Komponente.

Jetzt ist der Administrator dieses Systems zu mir gekommen, um mithilfe der Komponente webservices Daten in das System zu importieren.

Also habe ich die Dokumentation gelesen, um dies herauszufinden, und ich sehe Dinge wie diese:


Klicken Sie hier, um zu sehen, wovon ich spreche (dies sieht in Firefox, Chrome und Safari am besten aus

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 nie einen HTTP-PUT oder ein DELETE senden.

Wie machst du das? Ich habe HTML-Formulare mit method = "post" oder method = "get" erstellt und die Anforderung wird an die im action-Attribut angegebenen Adressen gesendet (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 und alle Eigenschaften davon festlegt und irgendwie die Daten einschließt, die ich in die RESOURCE PUTEN möchte (


Ich versuche, REST Terminologie, was etwas anderes ist, ist für mich sehr ne

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 meistens mit .net. Alle Beispiele in .net wären also ziemlich fantastisch.

68
Ronnie Overby

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 das ein bisschen macht einfacher:

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);
    }
}
23
Jason DeFontes

Bei PUT und DELETE müssen Sie wahrscheinlich AJAX und XMLHttpRequests ausführen, da das FORM-Tag nur GET unterstützt und POST Verben und Links nur GET-Anforderungen ausführen.

Mit jQuery:

 $.ajax( {
       url: '/controller/action',
       type: 'PUT',
       data: function() { ...package some data as XML },
       dataType: 'xml',
       ... more options...
 );

Der Hinweis auf der Seite jQuery ajax options warnt davor, dass einige Browser PUT und DELETE für den Anforderungstyp nicht unterstützen. FWIW, ich habe nie PUT verwendet, aber DELETE in IE und FF. In Safari oder Opera nicht getestet.

15
tvanfosson

Hier ist, wie es in CURL gemacht wird: Verwendung von 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 ausführen, die auf der von Ihnen verwendeten Methode basieren.

8
Tony

Ich fand diese wirklich coole freie Software namens RESTClient .

Sie können mit HTTP-Ressourcen unter Verwendung verschiedener Verben interagieren, indem Sie die Header und den Text manuell festlegen, Authentifizierungsinformationen, SSL festlegen, Testskripts ausführen usw.

Dies wird mir dabei helfen, herauszufinden, wie ich mit unserer "Webservices" -Software interagieren kann, die eigentlich nur eine REST-konforme API für die Datenbank der Software ist.

6
Ronnie Overby

Sie können ein HTML-Formular nicht PUT-fähig machen (die Spezifikation definiert nur GET/POST für Formulare).

Allerdings sollte jede HTTP-API das PUT-Verfahren zulassen, genauso wie das GET- oder POST-Verfahren. Beispiel: hier ist 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.

6
Brian Agnew
2
everconfusedGuy

"Jetzt ist der Administrator dieses Systems zu mir gekommen, um mithilfe der Komponente webservices Daten in das System zu importieren."

Webdienste haben wenig mit HTML-Formularen zu tun.

Webdienstanforderungen werden entweder über Javascript (z. B. Ajax) oder über Ihre Anwendungsprogramme ausgeführt.

Sie würden ein C # - oder VB - Programm schreiben, das HTTP verwendet, um ein Put auf die angegebene Webdienst-URL mit dem angegebenen Datensatz durchzuführen.

Hier ist zum Beispiel ein Beispiel VB Code: http://developer.yahoo.com/dotnet/howto-rest_vb.html#post

Ersetzen Sie den Methodenstring von "POST" durch "PUT".

1
S.Lott

Probieren Sie libcurl.NET aus: http://sourceforge.net/projects/libcurl-net/

1
user141682

Here ist ein Tool, mit dem Sie PUT-Dateien ziehen und ablegen können

1
Yishai

Nur ein Köpfchen entfernt einige Netzwerkadministratoren blockieren aus verschiedenen Gründen. Daher müssen Sie möglicherweise ein POST anstelle von PUT verwenden. Fragen Sie bei Ihren Operationen nach.

0
Srikar Doddi

PUT und DELETE sind nicht Teil von HTML4, sind jedoch in den HTML5-Spezifikationen enthalten. Aus diesem Grund werden die meisten gängigen Browser nicht gut unterstützt, da sie sich auf HTML4 konzentrieren. Sie sind jedoch definitiv Teil von HTTP und waren es schon immer. Sie führen ein PUT mit einem Nicht-Browser-Client oder mit einem Formular in einem HTML5-fähigen Browser durch.

Update: PUT und DELETE sind nicht länger Bestandteil von HTML5 für Formulare. Siehe: http://www.w3.org/TR/html5/association-of-controls-and-forms.html#attr-fs-method

0
aehlke