KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
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); }
Tags (comma-separated)
Save Edits
Cancel