Last active
August 29, 2015 14:16
-
-
Save nodoid/6824538d40e120298c9e to your computer and use it in GitHub Desktop.
Using Get/Post
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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