Acabei de receber essa exceção (ProtocolViolationException) em meu aplicativo .NET 2.0 (em execução no emulador padrão do Windows Mobile 6). O que me confunde é que, até onde sei, não adicionei nenhum corpo de conteúdo, a menos que o tenha feito inadvertidamente de alguma forma. Meu código está abaixo (muito simples). Preciso fazer mais alguma coisa para convencer o .NET de que este é apenas um GET http?
Obrigado brian
//run get and grab response
WebRequest request = WebRequest.Create(get.AbsoluteUri + args);
request.Method = "GET";
Stream stream = request.GetRequestStream(); // <= explodes here
XmlTextReader reader = new XmlTextReader(stream);
fonte
HttpClient
eHttpRequestMessage
?Tive o problema semelhante ao usar Flurl.Http:
Flurl.Http.FlurlHttpException: Call failed. Cannot send a content-body with this verb-type. GET http://******:8301/api/v1/agents/**** ---> System.Net.ProtocolViolationException: Cannot send a content-body with this verb-type.
O problema foi que usei
.WithHeader("Content-Type", "application/json")
ao criar IFlurlRequest.fonte
Porque você não especificou o cabeçalho.
Eu adicionei um exemplo estendido:
Cabeçalho (pedido de ref, p_Method);
E o método Header:
fonte
Defina o tipo de conteúdo da solicitação antes de ler o fluxo de resposta;
fonte