Вопрос

У нас есть это программное обеспечение с компонентом веб-сервисов.

Теперь ко мне пришел администратор этой системы, желая импортировать данные в систему с помощью компонента веб-сервисов.

Итак, я пошел читать документацию, чтобы попытаться понять это, и я вижу такие вещи:


Нажмите здесь, чтобы увидеть, о чем я говорю (это лучше всего выглядит в Firefox, Chrome и Safari)

В этой документации приведены примеры взаимодействия с системой с использованием HTTP-глаголов, таких как GET, POST, PUT, DELETE. Но из-за моего ограниченного опыта мне никогда не приходилось отправлять ни HTTP PUT, ни DELETE.

Как ты это делаешь? Я создал HTML-формы, которые имеют метод = " post " или метод = " получить " и запрос отправляется тому, что указано в атрибуте действия (action = " someResource "). Но я действительно не знаю, что делать с этим PUT.

Если бы мне пришлось угадывать, мне нужно было бы создать приложение, которое создает своего рода объект HTTP-запроса и устанавливает все его свойства и каким-то образом включает данные, которые я хочу передать в RESOURCE (


Я пытаюсь использовать терминологию REST, которая это что-то еще очень новое для меня
). Затем я бы отправил запрос, используя мой язык программирования и бла-бла-бла. Я просто размышляю об этом. Пожалуйста, предложите некоторую помощь!

Я думал, что являюсь веб-разработчиком, поскольку знаю такие вещи, как XHTML, CSS, JavaScript и т. д., но, похоже, я совсем ничего не знаю об основах Интернета (HTTP).

ИЗМЕНИТЬ

PS: я программирую в основном на .net. Таким образом, любые примеры в .net были бы довольно удивительными.

Это было полезно?

Решение

Вот пример C # с использованием 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);
        }
}

Обновление : теперь в System.Net.Http есть класс HttpClient ( доступен в виде пакета NuGet ), что немного облегчает эту задачу:

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

Другие советы

PUT и DELETE, скорее всего, потребуют от вас использования AJAX и выполнения XMLHttpRequests, поскольку тег FORM поддерживает только глаголы GET и POST, а ссылки только выполняют запросы GET.

С помощью jQuery:

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

В примечании на параметрах jQuery ajax содержится предупреждение о том, что некоторые браузеры не Поддержка PUT и DELETE для типа запроса. FWIW, я никогда не использовал PUT, но использовал DELETE в IE и FF. Не тестировался в Safari или Opera.

Вот как это сделать в CURL: Как использовать cURL для тестирования RESTful Rails

Или ... вы определенно можете использовать форму HTML. Если приложение действительно RESTful, оно поймет действия REST и позволит вам выполнять только определенные действия в зависимости от используемого вами метода.

Вы не можете PUT использовать форму HTML (спецификация определяет только GET / POST для форм).

Однако любой HTTP API должен позволять вам PUT, так же, как он позволяет вам получать или POST. Например, вот документация по Java HTTPClient , в которой подробно описывается PUT вместе со всеми другие глаголы HTTP.

Я не знаю, какой язык вы используете, но я думаю, что написать приложение для выполнения HTTP PUT будет довольно тривиально.

Я нашел это действительно классное бесплатное программное обеспечение под названием RESTClient .

Он позволяет вам взаимодействовать с HTTP-ресурсами, используя различные глаголы, вручную настраивая заголовки и текст, настраивая информацию для аутентификации, ssl, запуска тестовых сценариев и т. д.

Это поможет мне понять, как взаимодействовать с нашими " веб-сервисами " программное обеспечение, которое действительно просто RESTful API для базы данных программного обеспечения.

Проверьте API как расширение Chrome https://chrome.google.com/webstore/detail/fdmmgilgnpjigdojojpjoooidkmcomcm

Здесь - инструмент, который позволяет перетаскивать файлы PUT

" Теперь ко мне пришел администратор этой системы, желая импортировать данные в систему с помощью компонента веб-сервисов. "

Веб-сервисы имеют мало общего с формами HTML.

Запросы веб-служб выполняются либо из Javascript (например, как Ajax), либо из ваших прикладных программ.

Вы бы написали программу на C # или VB, которая использовала бы HTTP для установки Put на указанный URL-адрес веб-служб с заданным набором данных.

Вот, например, пример кода VB: http: // developer.yahoo.com/dotnet/howto-rest_vb.html#post

Замените строку метода " POST " с "PUT".

Как насчет того, чтобы попробовать libcurl.NET: http://sourceforge.net/projects/libcurl -net /

Просто поразмыслите, что некоторые сетевые администраторы блокируют выходы по разным причинам. Поэтому вам, возможно, придется использовать POST вместо PUT. Проверьте с вашими операциями.

PUT и DELETE не являются частью HTML4, но включены в спецификации HTML5. По этой причине большинство популярных браузеров не имеют хорошей поддержки для них, так как они ориентированы на HTML4. Тем не менее, они определенно являются частью HTTP и всегда были. Вы делаете PUT, используя не-браузерный клиент или форму в браузере с поддержкой HTML5.

Обновление: PUT и DELETE больше не являются частью HTML5 для форм. Смотрите: http: // www.w3.org/TR/html5/association-of-controls-and-forms.html#attr-fs-method

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top