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