I forbindelse med at jeg skulle lave en løsning der
integrerer med Facebook har jeg haft behov for at kommunikere med
facebook fra serveren. I den forbindelse har jeg fået sammensat
flg. simple klasse til at indpakke husholdningen forbundet med at
sende og modtage en datastrøm til hhv. fra facebook.
public class HttpComm
{
public virtual string GetData(string getAddr)
{
// Udfør et kald til den angivne adresse og returner svaret
try
{
var request = (HttpWebRequest)WebRequest.Create(getAddr);
request.Credentials = CredentialCache.DefaultCredentials;
var response = (HttpWebResponse)request.GetResponse();
var responseStream = response.GetResponseStream();
var readStream = new StreamReader(responseStream);
string status = readStream.ReadToEnd();
response.Close();
readStream.Close();
return status;
}
catch(Exception x)
{
ErrorLog.Write(x);
}
return "";
}
public virtual string PostData(string addr, string data)
{
byte[] postData = Encoding.UTF8.GetBytes(data);
try
{
HttpContext ctx = HttpContext.Current;
if(ctx != null)
{
string host = ctx.Request.Url.Host;
if(ctx.Request.Url.Port != 80)
host += ":" + ctx.Request.Url.Port.ToString();
var request = (HttpWebRequest)WebRequest.Create(addr);
request.Credentials = CredentialCache.DefaultCredentials;
request.Method = "POST";
request.UserAgent =
"Mozilla/4.0+"
+ "(compatible;+MSIE+8.0;+Windows+NT+6.0)";
request.Referer = ""; // "http://" + host + "/";
request.ContentType =
"application/x-www-form-urlencoded";
request.ContentLength = postData.Length;
request.TransferEncoding = "UTF-8";
Stream reqStream = request.GetRequestStream();
reqStream.Write(postData, 0, postData.Length);
reqStream.Close();
var response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
var readStream = new StreamReader(responseStream);
string status = readStream.ReadToEnd();
response.Close();
readStream.Close();
return status;
}
else
return "";
}
catch(Exception x)
{
ErrorLog.Write(x);
throw;
}
}
}
Så kan jeg kalde HttpComm.GetData og HttpComm.PostData for at
sende og modtage data med protokollerne GET og POST.