Question

Nous avons ce logiciel qui comporte un composant Webservices.

Maintenant, l'administrateur de ce système est venu me voir, souhaitant importer des données dans le système à l'aide du composant Webservices.

Alors, je suis allé lire la documentation pour essayer de comprendre ce qui se passait et je vois des choses comme celle-ci:


Cliquez ici pour voir de quoi je parle (ceci s’agit mieux de firefox, chrome et de & safari)

Cette documentation donne des exemples d'interaction avec le système à l'aide de verbes HTTP tels que GET, POST, PUT, DELETE. Mais dans mon expérience limitée, je n’ai jamais eu à envoyer ni PUT HTTP ni DELETE.

Comment faites-vous cela? J'ai construit des formulaires HTML dont la méthode est = " post " ou méthode = " obtenir " et la demande est envoyée à tout ce qui est spécifié dans l'attribut d'action (action = "someResource"). Mais je ne sais pas vraiment quoi faire avec cette affaire PUT.

Si je devais deviner, je devrais créer une application qui crée une sorte d'objet de requête HTTP, en définit toutes les propriétés et en quelque sorte, inclut les données que je souhaite mettre à la ressource (


J'essaie d'utiliser la terminologie REST, qui c’est quelque chose de très nouveau pour moi
). Ensuite, je voudrais envoyer la demande en utilisant mon langage de programmation et bla bla bla. Je ne fais que spéculer à ce sujet. S'il vous plaît offrir de l'aide!

Je pensais être un développeur Web, car je connais des choses comme XHTML, CSS, JavaScript, etc., mais cela commence à donner l’impression que je ne connais rien du tout aux fondements du Web (HTTP).

EDIT

PS: Je programme principalement avec .net. Ainsi, tous les exemples en .net seraient vraiment géniaux.

Était-ce utile?

La solution

Voici un exemple en C # utilisant 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);
        }
}

Mise à jour : il existe désormais une classe HttpClient dans System.Net.Http ( disponible sous forme de package NuGet ), ce qui facilite un peu la tâche:

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);
    }
}

Autres conseils

PUT et DELETE exigeront probablement que vous utilisiez AJAX et que vous fassiez XMLHttpRequests puisque la balise FORM ne prend en charge que les verbes et liens POST et POST ne faisant que des requêtes GET.

Avec jQuery:

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

La note de la page des options jQuery ajax avertit que certains navigateurs ne t supporte PUT et DELETE pour le type de requête. FWIW, je n’ai jamais utilisé PUT mais utilisé DELETE dans IE et FF. N'a pas été testé dans Safari ou Opera.

Voici comment procéder dans CURL: Comment utiliser cURL pour tester les rails RESTful

Ou ... vous pouvez certainement utiliser un formulaire HTML. Si l'application est vraiment RESTful, elle comprendra les actions REST et ne vous laissera effectuer que certaines actions en fonction de la méthode que vous utilisez.

Vous ne pouvez pas utiliser PUT avec un formulaire HTML (la spécification définit uniquement GET / POST pour les formulaires).

Cependant, toute API HTTP devrait vous autoriser à PUT, de la même manière qu’elle vous permet d’obtenir GET ou POST. Par exemple, voici la documentation Java HTTPClient , qui détaille le PUT à côté de tous les autres verbes HTTP.

Je ne sais pas quelle langue vous utilisez, mais je pense que ce sera assez simple d'écrire une application pour exécuter un PUT HTTP.

J'ai trouvé ce logiciel gratuit vraiment cool appelé RESTClient .

Il vous permet d’interagir avec les ressources HTTP en utilisant divers verbes, en définissant manuellement les en-têtes et le corps, en définissant les informations d’authentification, en ssl, en exécutant des scripts de test, etc.

Cela m'aidera à comprendre comment interagir avec nos "webservices". logiciel qui est vraiment juste une API RESTful à la base de données du logiciel.

Testez l’API en tant qu’extension chrome

Here est un outil qui vous permet de glisser-déposer dans les fichiers PUT

"Maintenant, l'administrateur de ce système est venu me voir pour importer des données dans le système à l'aide du composant Webservices."

Les services Web ont peu à voir avec les formulaires HTML.

Les demandes de services Web sont effectuées à partir de Javascript (par exemple, comme Ajax) ou à partir de vos programmes d'application.

Vous écririez un programme C # ou VB utilisant HTTP pour effectuer un transfert vers l'URL de services Web donnée avec l'ensemble de données donné.

Voici par exemple un exemple de code VB: http: // developer.yahoo.com/dotnet/howto-rest_vb.html#post

Remplacez la chaîne de méthode de " POST " avec "PUT".

Pourquoi ne pas essayer libcurl.NET: http://sourceforge.net/projects/libcurl -net /

Il suffit de rappeler à certains administrateurs réseau les blocages pour diverses raisons. Vous devrez donc peut-être utiliser un POST au lieu de PUT. Vérifiez auprès de vos opérations.

PUT et DELETE ne font pas partie de HTML4, mais sont inclus dans les spécifications HTML5. Pour cette raison, les navigateurs les plus populaires ne sont pas pris en charge, car ils se concentrent sur HTML4. Cependant, ils font définitivement partie de HTTP et l'ont toujours été. Vous effectuez un PUT en utilisant un client autre que le navigateur ou en utilisant un formulaire dans un navigateur compatible HTML5.

Mise à jour: PUT et DELETE ne font plus partie de HTML5 pour les formulaires. Voir: http: // www.w3.org/TR/html5/association-of-controls-and-forms.html#attr-fs-method

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top