Introdução ao Documento:O login do hiperlink está visível.
Ao chamar a interface da outra parte pelo curl, descobriu-se que o fenômeno do timeout era muito sério, então perguntei à pessoa da interface da outra parte, e a outra parte disse que era necessário acrescentar:
Depois de adicioná-lo, percebi que funcionava muito bem, então pesquisei como usá-lo. Ao usar curl para POST, quando "os dados POST são maiores que 1024 bytes", o curl não iniciará diretamente uma requisição POST, mas será dividido em 2 etapas:
Expect: 100-continue
1. Enviar uma solicitação contendo um Expect:100-continue, pedindo ao servidor que aceite os dados
2. Após receber a resposta de 100 continuações retornada pelo Servidor, os dados são enviados por POST ao Servidor
Mas há vários problemas com isso:
Nem todos os servidores responderão corretamente ao 100-continue, por exemplo, lighttpd, que retornará 417 Expectation Failed.
causando atraso,Quando o cliente envia o primeiro Expect:100-continue, ele precisa esperar a resposta do servidor antes de enviar o corpo da solicitação。
Se você tem certeza de que o servidor da outra parte não rejeitará solicitações POST com mais de 1024 bytes, pode evitar usar esse método e evitar os dois efeitos colaterais mencionados acima, e a solução é a mencionada no início do artigo.
Cerca de 100 continuam
O objetivo disso é:
Ele permite que o cliente julgue se o servidor está disposto a receber os dados da solicitação antes de enviá-los, e se o servidor estiver disposto a recebê-los, o cliente realmente enviará os dados.
Comportamento do cliente:
Um cliente que envia 100 continue não deve esperar uma eternidade por uma resposta do servidor, e após um período de timeout, o cliente deve enviar a entidade diretamente.
Comportamento no lado do servidor:
Se o servidor receber uma solicitação de 100 continuações, ele responderá com 100 continue ou enviará um código de erro. O servidor nunca pode enviar 100 continuações para um cliente que não envie 100 continuações. Mas alguns garçons têm. IIS 5 enviando incorretamente resposta 100-continue
Se o servidor recebe o corpo do cliente antes de enviar a resposta de 100 continuações, isso significa que o cliente decidiu começar a enviar dados, então o servidor não pode mais enviar 100 continue para o cliente. O código de configuração .NET Expect Off Expect é o seguinte:
O RestSharp está configurado da seguinte forma:
|