Вызов веб-сервиса из-за прокси-сервера

Итерируйте по потомкам и получите то, что вам нужно:

import xml.etree.ElementTree as et

doc = """
your doc
"""
root = et.fromstring(doc)
result = []

for shire in root:
    for location in shire:
        location_id = location.attrib.get('id')
        for reference in location:
            list_of_attribs = [reference.attrib.get(x) for x in filter_reference]
            result.append((location_id, list_of_attribs))

print(result) # [('5178566', '978-1-891830-75-4', '110 Per¢'), ('5178566', '978-1-60309-2395', 'American Elf 1999'), ('5178566', '978-1-891830-37-2', 'The Barefoot Serpent (softcover)'), ('5178566', '978-1-891830-56-3', 'Bighead'), ('5178566', '978-1-891830-19-8', 'Box Office Poison'), ('5178568', '978-1-891830-37-2', 'The Barefoot Serpent (softcover)'), ('5178568', '978-1-936561-69-8', 'Chester 5000 (Book 2)'), ('5178568', '978-1-891830-81-5', 'Cry Yourself to Sleep'), ('5178568', '978-1-891830-75-4', '110 Per¢'), ('5178568', '978-1-891830-77-8', 'Every Girl is the End of the World for Me'), ('5178568', '978-0-9585783-4-9', 'From Hell')]
9
задан Hemant 13 May 2009 в 17:19
поделиться

5 ответов

Хорошо. Итак, я провел несколько экспериментов, и оказалось, что нам действительно нужно написать код, чтобы он работал из-за прокси-сервера. (Хотя я бы предпочел лучшее решение)

Таким образом, он фактически детализирует запрос информации о прокси-сервере у пользователя, а затем конфигурирует служебный прокси-класс для прокси-сервера, как показано ниже:

var networkCredentials = new NetworkCredential ("username", "password", "domain");
WebProxy myProxy = new WebProxy ("W.X.Y.Z:NN", true) {Credentials = networkCredentials};
var service = new iptocountry { Proxy = myProxy };
string result = service.FindCountryAsString ("A.B.C.D");

Я написал тестовый класс, и он использует IP для страны бесплатная веб-служба.

Используя приведенный выше код, я мог успешно использовать веб-службу.

7
ответ дан 4 December 2019 в 07:48
поделиться

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

Если вам действительно нужно пройти через какой-то прокси-сервер, все, что вам нужно, do добавляет в ваш web.config следующее:

  <system.net>
    <defaultProxy>
      <proxy  proxyaddress="http://yourproxyserver:80" />
    </defaultProxy>
  </system.net>

Вы также можете сделать это с помощью кода, используя это:

WebRequest.DefaultWebProxy = new WebProxy("http://yourproxyserver:80/",true);
10
ответ дан 4 December 2019 в 07:48
поделиться

Все встроенные коды (WebClient, WCF, HttpWebRequest и т. Д.) Используют конфигурацию WinHTTP для получения конфигурации прокси. Итак, все, что вам нужно сделать, это настроить WinHTTP, чтобы знать о прокси!

В XP это:

proxycfg -u

, который импортирует настройки из пользовательских настроек прокси-сервера IE (WinInet).

В Vista и т. Д. Вы используйте

netsh winhttp

(и некоторую подкоманду вроде "import")

непроверено, но попробуйте:

netsh winhttp import proxy source=ie

После этого весь ваш код .NET должен работать через прокси, который, по-видимому, уже настроен для использования IE и т. д. .

5
ответ дан 4 December 2019 в 07:48
поделиться

Если ваш веб-сервис находится в той же внутренней сети, что и клиент, вызывающий веб-сервис, он не должен проходить через прокси.

-1
ответ дан 4 December 2019 в 07:48
поделиться

Пока веб-трафик (порт 80) разрешен, вам не нужно делать ничего особенного. С точки зрения маршрутизатора / прокси-сервера вызовы веб-служб такие же, как и любой другой HTTP-трафик.

-1
ответ дан 4 December 2019 в 07:48
поделиться
Другие вопросы по тегам:

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