Server to server kommunikation i .NET

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.

Comment