Потребление веб-сервиса через интернет-прокси-сервер, использование клиента WCF в C#; обеспечение аутентификации прокси-сервера

И ошибка 78455 («Предоставить возможность принудительной записи спецификации в файлы UTF-8»), и ошибка 136854 не оставляют особой надежды на такую ​​возможность.

Поддержка кодирования в рабочей области основана на том, что доступно из Java .
Для любого данного ресурса в рабочей области можно получить строку кодировки, которую можно использовать с любыми API-интерфейсами Java, которые принимают строки кодировки.
Примеры:

  • 'US-ASCII',
  • 'UTF-8',
  • 'Cp1252',
  • 'UTF-16 '(Big Endian, спецификация вставлена ​​автоматически),
  • ' UTF-16BE '(Big Endian, спецификация не вставлена ​​автоматически),
  • ' UTF-16LE '(Little Endian, спецификация не вставляется автоматически).

Для кодировок Java, кроме кодировки «UTF-16», спецификации не вставляются (при записи) и не удаляются (при чтении) бесплатно .
Даже если это озадачивает конечных пользователей, именно так работают все Java-приложения.
Если приложения хотят поддерживать создание файлов UTF-8 с спецификациями, чтобы соответствовать ожиданиям своих пользователей, им необходимо предоставить такую ​​возможность самостоятельно (поскольку ни Java, ни модель ресурсов не помогут в этом).
Eclipse действительно обеспечивает некоторые улучшения в обнаружении спецификаций, но не генерирует и не пропускает их.

6
задан Peter 4 November 2009 в 08:55
поделиться

1 ответ

Я узнал, как это сделать с помощью помощь участника другого форума, который в суматохе пробовал разные вещи, которые я забыл. Так что спасибо этому забытому человеку.

Вот код, который в итоге сработал (замаскированный подходящим образом, но дает правильную идею):

    BasicHttpBinding binding = new BasicHttpBinding("APISoap"); /* APISoap is the name of the binding element in the app.config */
    binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
    binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic;
    binding.UseDefaultWebProxy = false;
    binding.ProxyAddress = new Uri(string.Format("http://{0}:{1}", proxyIpAddress, proxyPort)); 
    EndpointAddress endpoint = new EndpointAddress("http://www.examplewebservice/api.asmx");

    WebServiceClient client = new WebServiceClient(binding, endpoint);

    client.ClientCredentials.UserName.UserName = proxyUserName;
    client.ClientCredentials.UserName.Password = proxyPassword;
6
ответ дан 17 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

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