Pergunta

Temos este software que tem um componente de webservices.

Agora, o administrador do sistema tem vindo a mim, querendo importar dados para o sistema usando o webservices componente.

Então, eu fui ler a documentação para tentar entender essa coisa e eu estou vendo coisas como esta:


Clique aqui para ver o que estou falando (este Best looks no Firefox, Chrome e Safari)

Essa documentação dá exemplos de interagir com o sistema utilizando HTTP verbos, como GET, POST, PUT, DELETE. Mas, na minha experiência limitada, eu nunca tive a enviar nem uma PUT HTTP, nem um DELETE.

Como você faz isso? Eu construí formulários HTML que têm method = "post" ou method = "get" e a solicitação é enviada para o que está especificado no atributo action (ação = "someResource"). Mas eu realmente não sei o que fazer com essa coisa PUT.

Se eu tivesse que adivinhar, eu teria que construir uma aplicação que cria algum tipo de um objeto de solicitação HTTP e definir todas as propriedades do mesmo e de alguma forma incluir os dados que eu quero colocar para o recurso (


Eu estou tentando usar a terminologia REST, que é outra coisa é muito novo para mim
). Então eu iria enviar a solicitação usando minha linguagem de programação e blá blá blá. Estou apenas especulando sobre isso. Por favor, oferecer alguma ajuda!

Eu pensei que eu era um desenvolvedor web, desde que eu sei coisas como XHTML, CSS, JavaScript, etc. mas está começando a olhar como eu não sei nada sobre os fundamentos da web em tudo (HTTP).

Editar

PS: Eu programar principalmente com .net. Assim, qualquer exemplos em .net seria bastante impressionante.

Foi útil?

Solução

Aqui está um exemplo C # usando 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);
        }
}

Atualizar : há agora uma classe HttpClient em System.Net.Http ( disponível como um pacote NuGet ) que torna este um pouco mais fácil:

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

Outras dicas

PUT e DELETE são susceptíveis de exigir que você usar AJAX e fazer XMLHttpRequests desde a tag FORM suporta apenas GET e POST verbos e links só fazer solicitações GET.

Com jQuery:

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

A nota na página as opções jQuery ajax adverte que alguns navegadores don' t suporte PUT e DELETE para o tipo de solicitação. FWIW, eu nunca usei PUT mas usaram excluir no IE e FF. Não testei no Safari ou Opera.

Aqui está como fazê-lo em CURL: Como usar cURL para testar RESTful Rails

Ou ... você pode definitivamente usar um formulário HTML. Se o aplicativo é verdadeiramente RESTful, ele vai compreender as ações descansar e só permitem que você executar determinadas ações com base no método que você usa.

Você não pode colocar através de um formulário HTML (as define especificações única GET / POST para formulários).

No entanto, qualquer HTTP API deve permitir que você coloque, da mesma forma que ele permite que você GET ou POST. Por exemplo, aqui está o Java HTTPClient documentação , que detalhes PUT ao lado de todos os outros verbos HTTP.

Eu não sei qual idioma você está usando, mas eu acho que vai ser bastante trivial para escrever um aplicativo para executar um PUT HTTP.

Eu encontrei esta peça muito legal de software livre chamado RESTClient .

Ele permite interagir com recursos HTTP usando vários verbos, ajuste manualmente cabeçalhos e o corpo, definindo informação de autenticação, SSL, executando scripts de teste, etc.

Isso vai me ajudar a descobrir como interagir com o nosso software "webservices", que é realmente apenas uma API RESTful a base de dados do software.

Aqui é uma ferramenta que permite arrastar e soltar arquivos para PUT

"Agora, o administrador do sistema tem vindo a mim, querendo importar dados para o sistema usando o webservices componente."

serviços Web têm pouco a ver com formulários HTML.

solicitações de serviços da Web são ou feito a partir de Javascript (por exemplo, como Ajax) ou eles são feitos a partir de seus programas de aplicação.

Você iria escrever um C # ou VB programa que usou HTTP para fazer um posto à determinada URL serviços web com um dado conjunto de dados.

Aqui, por exemplo, é algum código VB de exemplo: http: // developer.yahoo.com/dotnet/howto-rest_vb.html#post

Substitua a cadeia método de "POST", com "PUT".

Que tal dar libcurl.NET uma tentativa: http://sourceforge.net/projects/libcurl -net /

Apenas um heads-up alguma rede administradores bloco saídas por várias razões. Então você pode ter que usar um POST em vez de PUT. Verifique com suas operações.

PUT e DELETE não são parte de HTML4, mas são incluídas nas especificações HTML5. Por esta razão, os navegadores mais populares não têm um bom suporte para eles, pois eles se concentram em HTML4. No entanto, eles são definitivamente parte de HTTP e sempre foram. Você faz um PUT usando algum cliente sem navegador, ou através de um formulário em um navegador HTML5 pronto.

Update: PUT e DELETE não fazem mais parte do HTML5 para formulários. Veja: http: // www.w3.org/TR/html5/association-of-controls-and-forms.html#attr-fs-method

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top