Estou tentando passar por uma solicitação de autenticação que imita a "solicitação básica de autenticação" que estamos acostumados a ver ao configurar o IIS para esse comportamento.
O URL é: https://telematicoprova.agenziadogane.it/TelematicoServiziDiUtilitaWeb/ServiziDiUtilitaAutServlet?UC=22&SC=1&ST=2
(aviso: https!)
Este servidor está em execução no UNIX e Java como servidor de aplicativos.
Este é o código que eu uso para conectar-me a este servidor:
CookieContainer myContainer = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://telematicoprova.agenziadogane.it/TelematicoServiziDiUtilitaWeb/ServiziDiUtilitaAutServlet?UC=22&SC=1&ST=2");
request.Credentials = new NetworkCredential(xxx,xxx);
request.CookieContainer = myContainer;
request.PreAuthenticate = true;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
(Copiei isso de outro post neste site). Mas eu recebo esta resposta do servidor:
A conexão subjacente foi fechada: ocorreu um erro inesperado em um envio.
Acho que tentei todas as tarefas possíveis que meu conhecimento em c # me oferece, mas nada ...
c#
authentication
credentials
webrequest
Kenny Rullo
fonte
fonte
Respostas:
Você também pode adicionar o cabeçalho da autorização.
Basta criar o nome "Autorização" e o valor "Básico BASE64 ({USERNAME: PASSWORD})"
Editar
A codificação foi alterada de UTF-8 para ISO 8859-1 por Qual codificação devo usar para autenticação básica HTTP? e o comentário de Jeroen.
fonte
Eu finalmente entendi!
e isso é
GetCredential()
YAY!
fonte
Se você pode usar a
WebClient
classe, o uso da autenticação básica se torna simples:fonte
Tente o seguinte:
fonte
Para aqueles que usam RestSharp , pode falhar ao usar o SimpleAuthenticator (possivelmente devido ao não uso da ISO-8859-1 nos bastidores). Consegui fazê-lo enviando explicitamente cabeçalhos de autenticação básica:
fonte
O código a seguir resolverá a resposta json se houver autenticação básica e proxy implementados. O IIS 7.5 Hosting Problm também será resolvido.
fonte
As especificações podem ser lidas como "ISO-8859-1" ou "indefinido". Sua escolha. Sabe-se que muitos servidores usam a ISO-8859-1 (goste ou não) e falhará quando você enviar outra coisa.
Para mais informações e uma proposta para corrigir a situação, consulte http://greenbytes.de/tech/webdav/draft-reschke-basicauth-enc-latest.html
fonte
A construção a seguir não estava funcionando corretamente para mim:
Eu usei
CredentialCache
:No entanto, se você desejar adicionar várias credenciais de autenticação básica (por exemplo, se houver um redirecionamento de que você saiba), poderá usar a seguinte função que eu criei:
Espero que ajude alguém no futuro.
fonte
Primeira coisa, para mim ServicePointManager.SecurityProtocol = SecurityProtocolType. Tls12 funcionou em vez de Ssl3.
Em segundo lugar, tive que enviar a solicitação de autenticação básica, juntamente com alguns dados (codificado por formulário). Aqui está a amostra completa que funcionou perfeitamente para mim, depois de tentar muitas soluções.
Isenção de responsabilidade: O código abaixo é uma mistura de soluções encontradas neste link e em alguns outros links de stackoverflow, obrigado pelas informações úteis.
fonte