Skip to content

Instantly share code, notes, and snippets.

@nodoid
Last active August 29, 2015 14:16
Show Gist options
  • Save nodoid/6824538d40e120298c9e to your computer and use it in GitHub Desktop.
Save nodoid/6824538d40e120298c9e to your computer and use it in GitHub Desktop.
Using Get/Post
private T callService<T>(string method, string json, string auth, bool post = false, List<string> headers = null) where T : new()
{
string url = string.Format("{0}/{1}", _configuration.BaseUrl, method);
var request = WebRequest.Create(url) as HttpWebRequest;
request.Method = !post ? "GET" : "POST";
request.Accept = "application/json";
request.ContentType = "application/json";
request.Headers["Authorization"] = auth;
if (headers != null)
{
for (int i = 0; i < headers.Count; i += 2)
request.Headers[headers[i]] = headers[i + 1];
}
if (post)
{
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(json);
}
}
string responseContent;
try
{
using (var response = request.GetResponse() as System.Net.HttpWebResponse)
{
using (var reader = new System.IO.StreamReader(response.GetResponseStream()))
{
responseContent = reader.ReadToEnd();
}
}
T deserial = Deserialize<T>(responseContent);
return deserial;
}
catch (WebException ex)
{
T obj = Activator.CreateInstance<T>();
return obj;
}
}
private static string Serialize<T>(T obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, obj);
string retVal = Encoding.UTF8.GetString(ms.ToArray(), 0, (int)ms.Length);
ms.Dispose();
return retVal;
}
private static T Deserialize<T>(string json)
{
T obj = Activator.CreateInstance<T>();
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
obj = (T)serializer.ReadObject(ms);
ms.Dispose();
return obj;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment