HttpWebRequest долгое обходное решение URI?

Путем я обычно делаю это зависит от набора, который Вы перечисляете. Если название набора будет подразумевать то, что вводит параметр лямбды, то будет, то я просто иду с одной буквой, однако если набор не будет столь же описательным, то я буду использовать слово.

IE:

myCollection.Where(person =>....); //non descriptive collection name

myPeopleCollection.Where(p=>...); // descriptive collection name
11
задан RobV 19 October 2009 в 10:41
поделиться

2 ответа

Я использую протокол RESTful, и для запросов следует использовать GET.

Нет причин, по которым POST нельзя также использовать для запросов; для действительно длинных данных вы должны это сделать, поскольку очень длинные URI не поддерживаются глобально и никогда не поддерживались. Это одна из областей, где HTTP не соответствует идеалу REST.

Причина, по которой POST обычно не используется на уровне простого HTML, заключается в том, чтобы остановить запрос браузера на перезагрузку и продвигать, например,. закладки. Но для HttpWebRequest у вас нет ни одной из этих проблем, поэтому идите и отправьте POST. Веб-приложения должны использовать параметр или часть пути URI, чтобы отличать запросы на запись от запросов, а не только метод запроса. (Конечно, запрос на запись от метода GET все равно должен быть отклонен.)

6
ответ дан 3 December 2019 в 09:41
поделиться

Я не думаю, что HttpWebRequest действительно несовместим с URL-адресами GET того размера, о котором вы говорите.Я говорю это, основываясь на двух вещах:

  1. В своей работе я использую HttpWebRequest для беспроблемной отправки HTTP-запросов GET длиной более 2048 символов. Я не уверен, какие у меня самые длинные, но мы говорим о 10 000+ символов. (Это в первую очередь между веб-приложением и экземпляром Solr, работающим под Tomcat.)

  2. .NET имеет некоторые ограничения на длину URL-адресов GET, но те, о которых я знаю, намного превышают 2048 символов. Например, сегодня я узнал от своего профилировщика, что WebRequest.Create (строковый url) вызывает конструктор класса Uri , и это задокументировано для выдачи исключения UriFormatException, если «длина uriString превышает 65534 символа»

Я не уверен, где может быть ваша проблема, если это не сам HttpWebRequest. Знаете ли вы, при каких условиях ваша веб-служба будет возвращать HTTP 404 (т. Е. «Не найден»)? (Я предполагаю, что 404 исходит от вашего веб-сервиса, а не подделывается в недрах .NET.) Я также хотел бы дважды проверить, что адрес, который вы вставляете в браузер, на самом деле тот же, что и отправлено .NET; как предложил Фероз, для этого вам следует использовать инструмент сетевого сниффинга. Если два адреса совпадают, то, возможно, в следующий раз сравните, как заголовки HTTP различаются между случаем .NET и случаем браузера. (Между прочим, я лично считаю, что Fiddler немного удобнее, чем wirehark для задач отладки HTTP в этих строках.)

См. Также этот несколько связанный вопрос: Чем HttpWebRequest отличается (функционально) от вставки a URL в адресную строку?

3
ответ дан 3 December 2019 в 09:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: