I have my SendRequest method that returns HttpWebResponse class, I want to get the response as Json when I use it in my Get request method. How can I achieve this?
Here is my SendRequest method
private HttpWebResponse SendRequest(HttpWebRequest request, string queryParams, string token)
{
HttpWebResponse response = null;
if(token != null)
{
request.Headers.Add("Authorization", "Bearer " + token);
}
request.ContentType = "application/json";
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException wex)
{
if (wex.Response == null)
throw new WebException(wex.StackTrace);
using (var errorResponse = (HttpWebResponse)wex.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
throw new Exception(reader.ReadToEnd());
}
}
}
var responseVal = new StreamReader(stream: response.GetResponseStream()).ReadToEnd();
return response;
}
Here is GET Method
public HttpWebResponse IsGet(string baseURL, string basePath, string queryParams, string token)
{
var request = (HttpWebRequest)WebRequest.Create(baseURL+basePath+queryParams);
request.Method = "GET";
return SendRequest(request, queryParams, token);
}
Here is my Test method
[Test]
public void GetUser()
{
HttpWebResponse response = client.IsGet(baseURL, "/User", null, token);
}
What I have tried:
I have tried to create a Response Handler class to convert it to Json but I get an error
"Newtonsoft.Json.JsonReaderException : Error reading JToken from JsonReader. Path '', line 0, position 0"
Stack Trace:
JToken.ReadFrom(JsonReader reader, JsonLoadSettings settings)
JToken.Parse(String json, JsonLoadSettings settings)
JToken.Parse(String json)
Here is the request Handler Class
public class ResponseHandler
{
public Stream unEncodedResponseStream;
public StreamReader reader;
public JContainer jsonResponseContainer;
public HttpWebResponse responsePassedIn;
public string responseAsJsonString;
public Stream UnEncodeResponseStream()
{
var responseStream = responsePassedIn.GetResponseStream();
if (responsePassedIn.ContentEncoding.ToLower().Contains("gzip"))
unEncodedResponseStream = new GZipStream(responseStream, CompressionMode.Decompress);
else if (responsePassedIn.ContentEncoding.ToLower().Contains("deflate"))
unEncodedResponseStream = new DeflateStream(responseStream, CompressionMode.Decompress);
else
unEncodedResponseStream = responseStream;
return unEncodedResponseStream;
}
public string ConvertResponseStreamToString(HttpWebResponse webResponse)
{
responsePassedIn = webResponse;
var responseStream = UnEncodeResponseStream();
reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
return reader.ReadToEnd();
}
public JContainer ConvertResponseToJson(HttpWebResponse response)
{
string localString;
if (response.ContentEncoding.Contains("application/xml"))
{
ConfigXmlDocument xmlDocument = new ConfigXmlDocument();
xmlDocument.LoadXml(ConvertResponseStreamToString(response));
localString = JsonConvert.SerializeXmlNode(xmlDocument);
}
else
localString = ConvertResponseStreamToString(response);
return JToken.Parse(localString) as JContainer;
}
}