コード例 #1
0
ファイル: HttpHelper.cs プロジェクト: secretmadonna/MyDev
        public static HttpFile GetFileUsePost(string url, HttpData data
                                              , string accept = null, string userAgent = null, int timeout         = 100
                                              , bool useCert  = false, string certFile = null, string certPassword = null
                                              , CookieContainer cookieContainer         = null, ICredentials credentials = null, IWebProxy proxy = null
                                              , Dictionary <string, string> otherHeader = null)
        {
            HttpFile result = new HttpFile();

            var reqAndResp = new HttpWebReqAndResp();

            try
            {
                reqAndResp = CreatePostHttpResponse(url, data, accept, userAgent, timeout, useCert, certFile, certPassword, cookieContainer, credentials, proxy, otherHeader);
                if (reqAndResp != null && reqAndResp.request != null && reqAndResp.response != null &&
                    reqAndResp.response.StatusCode == HttpStatusCode.OK &&
                    reqAndResp.response.ContentLength > 0 &&
                    (reqAndResp.response.ContentType.StartsWith("image", StringComparison.OrdinalIgnoreCase) ||
                     reqAndResp.response.ContentType.StartsWith("audio", StringComparison.OrdinalIgnoreCase) ||
                     reqAndResp.response.ContentType.StartsWith("video", StringComparison.OrdinalIgnoreCase) ||
                     reqAndResp.response.ContentType.StartsWith("application/octet-stream", StringComparison.OrdinalIgnoreCase)))
                {
                    result.ContentType = reqAndResp.response.ContentType;
                    result.FileName    = Guid.NewGuid().ToString("N") + FileHelper.GetExtension(result.ContentType);
                    using (var responseStream = reqAndResp.response.GetResponseStream())
                    {
                        using (var ms = new MemoryStream())
                        {
                            responseStream.CopyTo(ms);
                            result.FileData = ms.ToArray();
                        }
                        //using (var br = new BinaryReader(responseStream))
                        //{
                        //    result.FileData = br.ReadBytes((int)br.BaseStream.Length);
                        //}
                    }
                }
            }
            finally
            {
                if (reqAndResp != null)
                {
                    if (reqAndResp.response != null)
                    {
                        reqAndResp.response.Close();
                        reqAndResp.response = null;
                    }
                    if (reqAndResp.request != null)
                    {
                        reqAndResp.request.Abort();
                        reqAndResp.request = null;
                    }
                    reqAndResp = null;
                }
            }

            return(result);
        }
コード例 #2
0
ファイル: HttpHelper.cs プロジェクト: secretmadonna/MyDev
        public static string GetTextUsePost(string url, HttpData data
                                            , string accept = null, string userAgent = null, int timeout         = 100
                                            , bool useCert  = false, string certFile = null, string certPassword = null
                                            , CookieContainer cookieContainer         = null, ICredentials credentials = null, IWebProxy proxy = null
                                            , Dictionary <string, string> otherHeader = null)
        {
            var result = string.Empty;

            var reqAndResp = new HttpWebReqAndResp();

            try
            {
                reqAndResp = CreatePostHttpResponse(url, data, accept, userAgent, timeout, useCert, certFile, certPassword, cookieContainer, credentials, proxy, otherHeader);
                if (reqAndResp != null && reqAndResp.request != null && reqAndResp.response != null &&
                    reqAndResp.response.StatusCode == HttpStatusCode.OK &&
                    reqAndResp.response.ContentLength > 0 &&
                    (reqAndResp.response.ContentType.StartsWith("text", StringComparison.OrdinalIgnoreCase) ||
                     reqAndResp.response.ContentType.StartsWith("application/json", StringComparison.OrdinalIgnoreCase) ||
                     reqAndResp.response.ContentType.StartsWith("application/xml", StringComparison.OrdinalIgnoreCase)))
                {
                    var encode = Encoding.UTF8;
                    if (!string.IsNullOrEmpty(reqAndResp.response.CharacterSet))
                    {
                        encode = Encoding.GetEncoding(reqAndResp.response.CharacterSet);
                    }
                    using (var responseStream = reqAndResp.response.GetResponseStream())
                    {
                        using (var sr = new StreamReader(responseStream, encode))
                        {
                            result = sr.ReadToEnd();
                        }
                    }
                }
            }
            finally
            {
                if (reqAndResp != null)
                {
                    if (reqAndResp.response != null)
                    {
                        reqAndResp.response.Close();
                        reqAndResp.response = null;
                    }
                    if (reqAndResp.request != null)
                    {
                        reqAndResp.request.Abort();
                        reqAndResp.request = null;
                    }
                    reqAndResp = null;
                }
            }

            return(result);
        }