public PlugInFile[] DownloadPlugIn(PlugInDescription plDescription) { List <PlugInFile> plFile = new List <PlugInFile>(); foreach (string strFile in plDescription.Files) { HttpWebRequest webRequest = CreateWebRequest(new Uri(uriRepository, strFile)); webRequest.Method = "GET"; HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); try { string strContentDispositionHeader = webResponse.GetResponseHeader("Content-Disposition"); string strFileName = ""; byte[] bContent; if (webResponse.StatusCode != HttpStatusCode.OK) { throw new WebException("The server response included an error: " + (int)webResponse.StatusCode + " " + webResponse.StatusCode.ToString()); } if (strContentDispositionHeader != null && strContentDispositionHeader.Contains("filename=")) { strFileName = strContentDispositionHeader.Substring(strContentDispositionHeader.IndexOf("filename=") + "filename=".Length); } else { throw new Exception("The name of the file to download was not given by the server (There was no Content-Disposition header)."); } Stream sContent = webResponse.GetResponseStream(); BinaryReader sReader = new BinaryReader(sContent); bContent = sReader.ReadBytes((int)sContent.Length); sReader.Close(); sContent.Close(); plFile.Add(new PlugInFile(strFileName, bContent, webRequest.MediaType)); } finally { webResponse.Close(); } } return(plFile.ToArray()); }
public PlugInDescription[] GetPlugIns(string[] strPlugInKeys) { PlugInDescription[] arPlugIns = new PlugInDescription[0]; HttpWebRequest webRequest = CreateWebRequest(uriRepository); webRequest.Method = "POST"; webRequest.ContentType = "application/xml"; Stream sStream = webRequest.GetRequestStream(); try { WritePlugInRequest(strPlugInKeys, sStream); } finally { sStream.Close(); } HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); try { if (webResponse.StatusCode != HttpStatusCode.OK) { throw new WebException("The server response included an error: " + (int)webResponse.StatusCode + " " + webResponse.StatusCode.ToString()); } Stream sResponseStream = webResponse.GetResponseStream(); arPlugIns = ReadPlugInsFromStream(sResponseStream); sResponseStream.Close(); } finally { webResponse.Close(); } return(arPlugIns); }