I have the following code which works just fine when the method is "POST", but changing to "GET" doesn't work:
HttpWebRequest request = null; request = HttpWebRequest.Create(uri) as HttpWebRequest; request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; request.Method = "POST"; // Doesn't work with "GET" request.BeginGetRequestStream(this.RequestCallback, null); I get a ProtocolViolationException exception with the "GET" method.
Edit: After having a look using Reflector, it seems there is an explicit check for the "GET" method, if it's set to that it throws the exception.
Edit2: I've updated my code to the following, but it still throws an exception when I call EndGetResponse()
if (request.Method == "GET") { request.BeginGetResponse(this.ResponseCallback, state); } else { request.BeginGetRequestStream(this.RequestCallback, state); } In my function, ResponseCallback, I have this:
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult); Which throws the exception as well.
Answer
The above code now works, I had forgotten to take out the Content-Type line which was causing the exception to be thrown at the end. +1 to tweakt & answer to Jon.
The working code is now below:
HttpWebRequest request = null; request = HttpWebRequest.Create(uri) as HttpWebRequest; request.Method = "GET";// Supports POST too if (request.Method == "GET") { request.BeginGetResponse(this.ResponseCallback, state); } else { request.BeginGetRequestStream(this.RequestCallback, state); }
C# GET request with HttpClient HttpClient provides a base class for sending HTTP requests and receiving HTTP responses from a resource identified by a URI. using var client = new HttpClient(); var content = await client. GetStringAsync("http://webcode.me"); Console. WriteLine(content);
This is specified in the documentation. Basically GET requests aren't meant to contain bodies, so there's no sensible reason to call BeginGetRequestStream.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With