public async Task <string> SendOperationPostAsync(string apiKey, string url, string data)
        {
            if (string.IsNullOrWhiteSpace(url))
            {
                throw new ArgumentException("url");
            }
            if (string.IsNullOrWhiteSpace(apiKey))
            {
                throw new ArgumentException("ApiKey");
            }
            if (string.IsNullOrWhiteSpace(data))
            {
                throw new ArgumentException("data");
            }

            byte[] reqData = Encoding.UTF8.GetBytes(data);

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.Headers.Add("Ocp-Apim-Subscription-Key", apiKey);
            request.ContentType   = "application/json";
            request.Accept        = "application/json";
            request.ContentLength = (long)reqData.Length;
            request.Method        = "POST";

            Stream requestStreamAsync = await request.GetRequestStreamAsync();

            requestStreamAsync.Write(reqData, 0, reqData.Length);
            requestStreamAsync.Close();

            HttpWebResponse responseAsync = (HttpWebResponse)await request.GetResponseAsync();

            var opLocation = responseAsync.GetResponseHeader("operation-location");

            responseAsync.Close();

            return(opLocation);
        }
예제 #2
0
        /// <summary>
        /// POST请求
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="postData">发送的数据包</param>
        /// <param name="COOKIE">cookie</param>
        /// <param name="charset">编码格式</param>
        /// <returns></returns>
        public static string PostUrl(string url, string postData)
        {
            try
            {
                //System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //获取不到加上这一条
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method      = "Post";
                request.ContentType = "application/x-www-form-urlencoded";

                WebHeaderCollection headers = request.Headers;
                headers.Add("x-xsrf-token:" + token);

                request.ContentLength     = Encoding.UTF8.GetBytes(postData).Length;
                request.AllowAutoRedirect = false;
                request.KeepAlive         = true;

                request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36";
                request.Headers.Add("Cookie", cookie);

                request.Referer = "https://item.manager.taobao.com/taobao/manager/render.htm?tab=in_stock&table.sort.endDate_m=desc&spm=a217wi.openworkbeanchtmall";
                StreamWriter sw = new StreamWriter(request.GetRequestStream());
                sw.Write(postData);
                sw.Flush();

                HttpWebResponse response = request.GetResponse() as HttpWebResponse;                                 //获取反馈
                response.GetResponseHeader("Set-Cookie");
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")); //reader.ReadToEnd() 表示取得网页的源码流 需要引用 using  IO

                string html = reader.ReadToEnd();
                reader.Close();
                response.Close();
                return(html);
            }
            catch (WebException ex)
            {
                return(ex.ToString());
            }
        }
예제 #3
0
        public string HTTPGet(string Url)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);

            request.Method          = "GET";
            request.ProtocolVersion = new Version(1, 1);
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;

            foreach (var item in response.Headers)
            {
                this.txt_header += item.ToString() + ";" + response.GetResponseHeader(item.ToString()) + System.Environment.NewLine;
            }
            File.WriteAllText("test.HTML", txt_header);
            if (response.ContentLength <= 0)
            {
                return(null);
            }
            byte[] bytes;
            using (Stream stream = response.GetResponseStream())
            {
                int totalLength  = (int)response.ContentLength;
                int numBytesRead = 0;
                bytes = new byte[totalLength + 1024];
                while (numBytesRead < totalLength)//循环读取response.GetResponseStream()的值,每次最大长度为1024,
                {
                    int num = stream.Read(bytes, numBytesRead, 1024);
                    if (num == 0)
                    {
                        break;
                    }
                    numBytesRead += num;
                }
            }
            string content = Encoding.UTF8.GetString(bytes);

            File.AppendAllText("test.HTML", content);
            return(content);
        }
예제 #4
0
        /// <summary>
        /// POST请求
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="postData">发送的数据包</param>
        /// <param name="COOKIE">cookie</param>
        /// <param name="charset">编码格式</param>
        /// <returns></returns>
        public string PostUrl(string url, string postData)
        {
            try
            {
                System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //获取不到加上这一条
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "Post";


                request.ContentType   = "application/json";
                request.ContentLength = postData.Length;
                // request.ContentLength = Encoding.UTF8.GetBytes(postData).Length;
                request.AllowAutoRedirect = false;
                request.KeepAlive         = true;

                request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36";
                request.Headers.Add("pubArgs", pubArgs);


                // request.Referer = "";
                StreamWriter sw = new StreamWriter(request.GetRequestStream());
                sw.Write(postData);
                sw.Flush();

                HttpWebResponse response = request.GetResponse() as HttpWebResponse;                                 //获取反馈
                response.GetResponseHeader("Set-Cookie");
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")); //reader.ReadToEnd() 表示取得网页的源码流 需要引用 using  IO

                string html = reader.ReadToEnd();
                reader.Close();
                response.Close();
                return(html);
            }
            catch (WebException ex)
            {
                return(ex.ToString());
            }
        }
예제 #5
0
        /// <summary>
        /// Resolves any redirects at the specified URI.
        /// </summary>
        /// <param name="destination">The initial URI.</param>
        /// <param name="hopsLeft">The maximum number of redirects left to follow.</param>
        /// <param name="redirectHistory">A collection of <see cref="Uri"/> objects representing the redirect history.</param>
        /// <returns>The URI after resolving any HTTP redirects.</returns>
        private Uri Resolve(Uri destination, int hopsLeft, ICollection <Uri> redirectHistory)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(destination);

            request.AllowAutoRedirect = false;
            request.Method            = "HEAD";

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            Uri resolvedUri;

            if (response.StatusCode == HttpStatusCode.Redirect ||
                response.StatusCode == HttpStatusCode.Moved ||
                response.StatusCode == HttpStatusCode.MovedPermanently)
            {
                if (hopsLeft > 0)
                {
                    Uri redirectUri = new Uri(response.GetResponseHeader("Location"));
                    if (redirectHistory.Contains(redirectUri))
                    {
                        throw new Exception("Recursive redirection found");
                    }

                    redirectHistory.Add(redirectUri);
                    resolvedUri = this.Resolve(redirectUri, hopsLeft - 1, redirectHistory);
                }
                else
                {
                    throw new Exception("Maximum redirect depth reached");
                }
            }
            else
            {
                resolvedUri = response.ResponseUri;
            }

            return(resolvedUri);
        }
예제 #6
0
파일: Form1.cs 프로젝트: logonmy/all
        /// <summary>
        /// POST请求
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="postData">发送的数据包</param>
        /// <param name="COOKIE">cookie</param>
        /// <param name="charset">编码格式</param>
        /// <returns></returns>
        public static string PostUrl(string url, string postData, string COOKIE, string charset)
        {
            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //获取不到加上这一条
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.Method      = "Post";
            request.ContentType = "application/x-www-form-urlencoded";
            //添加头部
            //WebHeaderCollection headers = request.Headers;
            //headers.Add("appid:orders");
            //headers.Add("x-nike-visitid:5");
            //headers.Add("x-nike-visitorid:d03393ee-e42c-463e-9235-3ca0491475b4");
            //添加头部
            // request.ContentType = "application/json";
            request.ContentLength     = postData.Length;
            request.AllowAutoRedirect = true;
            request.KeepAlive         = true;

            request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36";
            request.Headers.Add("Cookie", COOKIE);
            //request.Headers.Add("origin","https://www.nike.com");
            request.Referer = "https://www.nike.com/orders/gift-card-lookup";
            StreamWriter sw = new StreamWriter(request.GetRequestStream());

            sw.Write(postData);
            sw.Flush();

            HttpWebResponse response = request.GetResponse() as HttpWebResponse;  //获取反馈

            response.GetResponseHeader("Set-Cookie");
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(charset)); //reader.ReadToEnd() 表示取得网页的源码流 需要引用 using  IO

            string html = reader.ReadToEnd();

            reader.Close();
            response.Close();
            return(html);
        }
예제 #7
0
        public async Task HttpHeader_Set_Success()
        {
            await LoopbackServer.CreateServerAsync(async (server, url) =>
            {
                HttpWebRequest request         = WebRequest.CreateHttp(url);
                request.Method                 = HttpMethod.Get.Method;
                Task <WebResponse> getResponse = request.GetResponseAsync();
                await server.AcceptConnectionSendResponseAndCloseAsync(HttpStatusCode.OK, "Content-Type: application/json;charset=UTF-8\r\n", "12345");

                using (WebResponse response = await getResponse)
                {
                    HttpWebResponse httpResponse = (HttpWebResponse)response;
                    Assert.Equal("UTF-8", httpResponse.CharacterSet);
                    Assert.Equal(HttpStatusCode.OK, httpResponse.StatusCode);
                    Assert.Equal("OK", httpResponse.StatusDescription);
                    CookieCollection cookieCollection = new CookieCollection();
                    httpResponse.Cookies = cookieCollection;
                    Assert.Equal(cookieCollection, httpResponse.Cookies);
                    Assert.Equal(5, httpResponse.ContentLength);
                    Assert.Equal(5, int.Parse(httpResponse.GetResponseHeader("Content-Length")));
                }
            });
        }
예제 #8
0
        /// <summary>
        /// Extracts and assigns the response header metadata.
        /// </summary>
        /// <param name="httpResponse"></param>
        /// <returns></returns>
        private static MwsResponseHeaderMetadata GetResponseHeaderMetadata(HttpWebResponse httpResponse)
        {
            var requestId  = httpResponse.GetResponseHeader("x-mws-request-id");
            var timestamp  = httpResponse.GetResponseHeader("x-mws-timestamp");
            var contextStr = httpResponse.GetResponseHeader("x-mws-response-context");
            var context    = new List <string>(contextStr.Split(','));

            double?quotaMax;

            try
            {
                var quotaMaxStr = httpResponse.GetResponseHeader("x-mws-quota-max");
                quotaMax = Double.Parse(quotaMaxStr);
            }
            catch (Exception)
            {
                quotaMax = null;
            }

            double?quotaRemaining;

            try
            {
                var quotaRemainingStr = httpResponse.GetResponseHeader("x-mws-quota-remaining");
                quotaRemaining = Double.Parse(quotaRemainingStr);
            }
            catch (Exception)
            {
                quotaRemaining = null;
            }

            DateTime?quotaResetsAt;

            try
            {
                var quotaResetsAtStr = httpResponse.GetResponseHeader("x-mws-quota-resetsOn");
                quotaResetsAt = MwsUtil.ParseTimestamp(quotaResetsAtStr);
            }
            catch (Exception)
            {
                quotaResetsAt = null;
            }

            return(new MwsResponseHeaderMetadata(requestId, context, timestamp, quotaMax, quotaRemaining, quotaResetsAt));
        }
예제 #9
0
        private string getSSOToken(string username, string password, bool sisi)
        {
            string accessToken = this.getAccessToken(username, password, sisi);
            string uri         = "https://login.eveonline.com/launcher/token?accesstoken=" + accessToken;

            if (accessToken == null)
            {
                return(null);
            }
            if (sisi)
            {
                uri = "https://sisilogin.testeveonline.com/launcher/token?accesstoken=" + accessToken;
            }
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uri);

            req.Timeout           = 5000;
            req.AllowAutoRedirect = false;
            HttpWebResponse resp     = (HttpWebResponse)req.GetResponse();
            string          ssoToken = this.extractAccessToken(resp.GetResponseHeader("Location"));

            resp.Close();
            return(ssoToken);
        }
예제 #10
0
        /// <summary>
        /// 从url读取内容到内存MemoryStream流中
        /// </summary>
        /// <param name="url"></param>
        /// <param name="ext"></param>
        /// <returns></returns>
        private static Stream DownLoadFielToMemoryStream(string url, out string ext)
        {
            var             wreq     = WebRequest.Create(url) as HttpWebRequest;
            HttpWebResponse response = wreq.GetResponse() as HttpWebResponse;
            var             filename = response.GetResponseHeader("Content-disposition");

            ext = filename.Split("=").Last().Split(".").Last().Replace("\"", "");
            MemoryStream ms = null;

            using (var stream = response.GetResponseStream())
            {
                Byte[] buffer = new Byte[response.ContentLength];
                int    offset = 0, actuallyRead = 0;
                do
                {
                    actuallyRead = stream.Read(buffer, offset, buffer.Length - offset);
                    offset      += actuallyRead;
                }while (actuallyRead > 0);
                ms = new MemoryStream(buffer);
            }
            response.Close();
            return(ms);
        }
        /// <summary>
        /// Uploads the binary stream by credential URI.
        /// </summary>
        /// <param name="blobUri">The BLOB URI.</param>
        /// <param name="stream">The stream.</param>
        /// <param name="contentType">Type of the content.</param>
        /// <param name="fileName">Name of the file.</param>
        /// <returns>ETag</returns>
        public override string UploadBinaryStreamByCredentialUri(string blobUri, Stream stream,
                                                                 string contentType, string fileName = null)
        {
            try
            {
                blobUri.CheckEmptyString("blobUri");
                stream.CheckNullObject("stream");

                // Upload a file using the pre-signed URL.
                var bucketName  = GetBucketNameByCredentialUri(blobUri);
                var key         = GetKeyByCredentialUri(blobUri);
                var streamBytes = stream.ReadStreamToBytes();
                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                var            md5hash       = md5.ComputeHash(streamBytes).EncodeBase64();
                HttpWebRequest httpRequest   = WebRequest.Create(blobUri) as HttpWebRequest;
                httpRequest.Method      = "PUT";
                httpRequest.ContentType = contentType;
                httpRequest.Headers["x-amz-meta-md5hash"] = md5hash;
                if (!string.IsNullOrEmpty(fileName))
                {
                    httpRequest.Headers["Content-Disposition"] = fileName;
                }

                using (Stream dataStream = httpRequest.GetRequestStream())
                {
                    // Upload blob stream.
                    dataStream.Write(streamBytes, 0, streamBytes.Length);
                }

                HttpWebResponse response = httpRequest.GetResponse() as HttpWebResponse;
                return(response.GetResponseHeader("ETag"));
            }
            catch (Exception ex)
            {
                throw ex.Handle(new { blobUri, contentType, fileName });
            }
        }
예제 #12
0
        public static string GetTicketGrantingTicket(string apiKey)
        {
            string         url        = AppSettings.UMLSTicketGrantingTicketURL;
            HttpWebRequest tgtRequest = (HttpWebRequest)HttpWebRequest.Create(url);

            tgtRequest.Method      = "POST";
            tgtRequest.ContentType = "application/x-www-form-urlencoded";
            tgtRequest.Accept      = "application/xml";

            try
            {
                using (StreamWriter sw = new StreamWriter(tgtRequest.GetRequestStream()))
                {
                    sw.Write("apikey=" + apiKey);
                }

                HttpWebResponse tgtResponse = (HttpWebResponse)tgtRequest.GetResponse();

                if (tgtResponse.StatusCode != HttpStatusCode.Created)
                {
                    return(null);
                }

                string location = tgtResponse.GetResponseHeader("Location");

                if (string.IsNullOrEmpty(location) || location.IndexOf("TGT") < 0)
                {
                    return(null);
                }

                return(location.Substring(location.IndexOf("TGT")));
            }
            catch
            {
                return(null);
            }
        }
예제 #13
0
        public static int DownloadBinary(string path, string file, string saveTo)
        {
            long           num = 0L;
            HttpWebRequest wr  = FUSRequest.Create("http://cloud-neofussvr.sslcs.cdngc.net/NF_DownloadBinaryForMass.do?file=" + path + file);

            wr.Method           = "GET";
            wr.Timeout          = 0x61a8;
            wr.ReadWriteTimeout = 0x61a8;
            using (HttpWebResponse response = (HttpWebResponse)wr.GetFUSResponse())
            {
                if (response == null)
                {
                    Console.WriteLine("Error DownloadBinary(): response is null.");
                    return(0x385);
                }
                if ((response.StatusCode != HttpStatusCode.OK) && (response.StatusCode != HttpStatusCode.PartialContent))
                {
                    Console.WriteLine("Error DownloadBinary(): " + ((int)response.StatusCode));
                }
                else
                {
                    long   total  = long.Parse(response.GetResponseHeader("content-length")) + num;
                    byte[] buffer = new byte[0x2000];
                    try
                    {
                        File.HandleEncryptedFile(response.GetResponseStream(), saveTo);
                    }
                    catch (Exception exception)
                    {
                        Console.WriteLine("Error DownloadBinary(): ");
                        Console.WriteLine(exception.ToString());
                        return(-1);
                    }
                }
                return(0);
            }
        }
예제 #14
0
        private void installOpenvpn()
        {
            addMsg("正准备安装openvpn...");
            addMsg("正在下载openvpn安装程序...");
            // 设置参数
            HttpWebRequest request = WebRequest.Create(Functions.URL + "/static/openvpn.exe") as HttpWebRequest;
            //发送请求并获取相应回应数据
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            //直到request.GetResponse()程序才开始向目标网页发送Post请求
            Stream responseStream = response.GetResponseStream();
            //创建本地文件写入流
            Stream stream = new FileStream("install.exe", FileMode.Create);

            byte[] bArr           = new byte[1024];
            int    length         = int.Parse(response.GetResponseHeader("Content-Length"));
            int    downloadLength = 0;
            int    downloadSpeed  = 0;
            int    size           = responseStream.Read(bArr, 0, (int)bArr.Length);

            while (size > 0)
            {
                downloadLength += size;
                if (((float)downloadLength / (float)length) * 40 > downloadSpeed)
                {
                    addMsg("=", false);
                    downloadSpeed++;
                }
                stream.Write(bArr, 0, size);
                size = responseStream.Read(bArr, 0, (int)bArr.Length);
            }
            stream.Close();
            responseStream.Close();
            addMsg("\n下载完成,准备进行安装...");
            Functions.RunExe("install.exe", "/S /D=openvpn");
            addMsg("安装完成,请重新尝试运行");
            Functions.DeleteFile("install.exe");
        }
예제 #15
0
        /// <summary>
        /// Returns the latest version available.
        /// </summary>
        public static Version GetLatestVersion()
        {
            // Note: GitHub uses a HTTP redirect to redirect from the generic latest release page to the actual latest release page

            // Retrieve the redirect page from the GitHub latest release page
            HttpWebRequest request = HttpWebRequest.CreateHttp(Constants.LatestReleaseWebsite);

            request.AllowAutoRedirect = false;
            String redirectPage = "";

            try {
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
                    redirectPage = response.GetResponseHeader("Location");
                    // redirectPage should be like "https://github.com/Otiel/BandcampDownloader/releases/tag/vX.X.X.X"
                }
            } catch {
                throw new CouldNotCheckForUpdatesException();
            }

            // Extract the version number from the URL
            String latestVersionNumber = "";

            try {
                latestVersionNumber = redirectPage.Substring(redirectPage.LastIndexOf("/v") + 2); // X.X.X.X
            } catch {
                throw new CouldNotCheckForUpdatesException();
            }

            if (Version.TryParse(latestVersionNumber, out Version latestVersion))
            {
                return(latestVersion);
            }
            else
            {
                throw new CouldNotCheckForUpdatesException();
            }
        }
예제 #16
0
        /// <summary>
        /// POST请求
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="postData">发送的数据包</param>
        /// <param name="COOKIE">cookie</param>
        /// <param name="charset">编码格式</param>
        /// <returns></returns>
        public static string PostUrl(string url, string postData, string COOKIE, string charset)
        {
            try
            {
                System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //获取不到加上这一条
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method      = "Post";
                request.ContentType = "application/x-www-form-urlencoded";

                //request.ContentType = "application/json";
                request.ContentLength     = postData.Length;
                request.ContentLength     = Encoding.UTF8.GetBytes(postData).Length;
                request.AllowAutoRedirect = false;
                request.KeepAlive         = true;

                request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36";
                request.Headers.Add("Cookie", COOKIE);

                request.Referer = "https://mail.163.com/js6/main.jsp?sid=cBZNTotGUjWbvKFHDtGGQKnnrdhvIQXG&df=email163";
                StreamWriter sw = new StreamWriter(request.GetRequestStream());
                sw.Write(postData);
                sw.Flush();

                HttpWebResponse response = request.GetResponse() as HttpWebResponse;                                 //获取反馈
                response.GetResponseHeader("Set-Cookie");
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(charset)); //reader.ReadToEnd() 表示取得网页的源码流 需要引用 using  IO

                string html = reader.ReadToEnd();
                reader.Close();
                response.Close();
                return(html);
            }
            catch (WebException ex)
            {
                return(ex.ToString());
            }
        }
예제 #17
0
 /// <summary>
 /// 发送请求
 /// </summary>
 /// <param name="url"></param>
 /// <param name="stream"></param>
 /// <param name="info"></param>
 public void SendRequest(string url, out Stream stream, out PageInfo info)
 {
     info   = new PageInfo();
     stream = null;
     try
     {
         req           = (HttpWebRequest)WebRequest.Create(url);
         req.Method    = "GET";
         req.Accept    = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
         req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0";
         req.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
         req.Headers.Add("Upgrade-Insecure-Requests", "1");
         req.Headers.Add("Cache-Control", "max-age=0");
         resp         = (HttpWebResponse)req.GetResponse();
         info.CharSet = resp.CharacterSet != "" ? resp.CharacterSet : "gb2312";
         var ce = resp.GetResponseHeader("Content-Encoding");
         info.IsGzip = !string.IsNullOrEmpty(ce) && ce.ToLower() == "gzip";
         stream      = resp.GetResponseStream();
     }
     catch (Exception ex)
     {
         //TODO:请求url异常
     }
 }
예제 #18
0
 public static bool Login(string username, string password)
 {
     try
     {
         HttpWebRequest request = (HttpWebRequest)WebRequest.Create(COOKIE_URL);
         request.Method            = "GET";
         request.AllowAutoRedirect = false;
         request.Accept            = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
         request.UserAgent         = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) coc_coc_browser/66.4.120 Chrome/60.4.3112.120 Safari/537.36";
         request.Headers.Add("Accept-Language:vi-VN,vi;q=0.8,fr-FR;q=0.6,fr;q=0.4,en-US;q=0.2,en;q=0.2");
         HttpWebResponse response = (HttpWebResponse)request.GetResponse();
         cookie                    = Regex.Replace(response.GetResponseHeader("Set-Cookie"), "( Domain=.+?;)|( Path=.{0,2})|( HttpOnly,)", "");
         request                   = (HttpWebRequest)WebRequest.Create(LOGIN_URL);
         request.Method            = "POST";
         request.AllowAutoRedirect = false;
         request.ContentType       = "application/x-www-form-urlencoded";
         request.Accept            = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
         request.UserAgent         = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) coc_coc_browser/66.4.120 Chrome/60.4.3112.120 Safari/537.36";
         request.Headers.Add("Accept-Language:vi-VN,vi;q=0.8,fr-FR;q=0.6,fr;q=0.4,en-US;q=0.2,en;q=0.2");
         request.Headers.Add("Cookie", cookie);
         var    postData  = $"TPL_username={HttpUtility.UrlEncode(username)}&TPL_password={HttpUtility.UrlEncode(password)}";
         byte[] byteArray = Encoding.UTF8.GetBytes(postData);
         request.ContentLength = byteArray.Length;
         Stream dataStream = request.GetRequestStream();
         dataStream.Write(byteArray, 0, byteArray.Length);
         dataStream.Flush();
         dataStream.Close();
         response = (HttpWebResponse)request.GetResponse();
         return(HttpStatusCode.Found.Equals(response.StatusCode));
     }
     catch (Exception e)
     {
         Console.Write(e);
         return(false);
     }
 }
예제 #19
0
        /// <summary>
        /// Initially used via a response callback for commands which expect a async response
        /// </summary>
        /// <param name="webResponse">the HttpWebResponse that will be sent back to the user from the request</param>
        protected virtual void ResponseCallback(HttpWebResponse webResponse)
        {
            //Track and throw up the X-ms request id (x-ms-request-id)
            MsftAsyncResponseId = webResponse.GetResponseHeader("x-ms-request-id");
            // Trace.WriteLine("Hosted Service Response Id: {0}", MsftAsyncResponseId);
            for (;;)
            {
                var asyncCommand = new GetAsyncStatusCommand
                {
                    HttpVerb       = HttpVerbGet,
                    SubscriptionId = SubscriptionId,
                    OperationId    = MsftAsyncResponseId,
                    ServiceType    = "operations",
                    Certificate    = Certificate
                };
                asyncCommand.Execute();
                Thread.Sleep(1000);
                OperationStatus status = asyncCommand.GetOperationStatus();
                switch (status)
                {
                case OperationStatus.InProgress:
                    break;

                case OperationStatus.Failed:
                    //Trace.WriteLine(String.Format("Hosted Service Response Id: {0}", MsftAsyncResponseId);
                    _lastFailureResponse = asyncCommand.GetFailureText();
                    SitAndWait.Set();
                    return;

                case OperationStatus.Succeeded:
                    //Trace.WriteLine("Hosted Service Response Id: {0}", MsftAsyncResponseId);
                    SitAndWait.Set();
                    return;
                }
            }
        }
예제 #20
0
        /// <summary>
        /// POST请求
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="postData">发送的数据包</param>
        /// <param name="COOKIE">cookie</param>
        /// <param name="charset">编码格式</param>
        /// <returns></returns>
        public static string PostUrl(string url, string postData)
        {
            try
            {
                System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //获取不到加上这一条
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "Post";

                request.ContentType   = "multipart/form-data; boundary=----WebKitFormBoundary6hBArAxW0nlIcAAV";
                request.ContentLength = postData.Length;
                //request.ContentLength = Encoding.UTF8.GetBytes(postData).Length;
                request.AllowAutoRedirect = false;
                request.KeepAlive         = true;

                request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36";
                request.Headers.Add("Cookie", COOKIE);

                request.Referer = "https://wenku.baidu.com/nduc/browse/uc?_page=mydocsupload&st=1&_redirect=1";
                StreamWriter sw = new StreamWriter(request.GetRequestStream());
                sw.Write(postData);
                sw.Flush();

                HttpWebResponse response = request.GetResponse() as HttpWebResponse;                                 //获取反馈
                response.GetResponseHeader("Set-Cookie");
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")); //reader.ReadToEnd() 表示取得网页的源码流 需要引用 using  IO

                string html = reader.ReadToEnd();
                reader.Close();
                response.Close();
                return(html);
            }
            catch (WebException ex)
            {
                return(ex.ToString());
            }
        }
예제 #21
0
        private void volvoLogin()
        {
            HttpWebRequest  request  = null;
            HttpWebResponse response = null;

            try
            {
                var postData = "Ecom_User_ID=" + _userID;
                postData += "&Ecom_Password="******"&portletlogin=Login";
                var data = Encoding.ASCII.GetBytes(postData);

                request                   = (HttpWebRequest)WebRequest.Create("https://vcamlogin.volvocars.biz/nidp/saml2/sso");
                request.Method            = "POST";
                request.ContentType       = "application/x-www-form-urlencoded";
                request.Host              = "vcamlogin.volvocars.biz";
                request.ContentLength     = data.Length;
                request.AllowAutoRedirect = false;

                using (var stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }

                response = (HttpWebResponse)request.GetResponse();
                HttpStatusCode statuscode = response.StatusCode;
                string         header     = response.GetResponseHeader("Set-Cookie");

                string[] headers = header.Split(';', ',');

                vidaLoginStepTwo(headers[0], headers[4]);
            }
            catch (WebException e)
            {
            }
        }
예제 #22
0
        /// <summary>
        /// POST请求
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="postData">发送的数据包</param>
        /// <param name="COOKIE">cookie</param>
        /// <param name="charset">编码格式</param>
        /// <returns></returns>
        public static string PostUrl(string url, string postData, string COOKIE, string charset)
        {
            try
            {
                System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //获取不到加上这一条
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "Post";
                WebHeaderCollection headers = request.Headers;
                headers.Add("authorization: Bearer " + token);
                request.ContentType   = "application/json";
                request.ContentLength = Encoding.UTF8.GetBytes(postData).Length;
                //request.ContentLength = postData.Length;
                request.KeepAlive = true;

                request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36";
                request.Headers.Add("Cookie", COOKIE);

                request.Referer = "https://www.tcpjw.com/B2BHall";
                StreamWriter sw = new StreamWriter(request.GetRequestStream());
                sw.Write(postData);
                sw.Flush();

                HttpWebResponse response = request.GetResponse() as HttpWebResponse;                                 //获取反馈
                response.GetResponseHeader("Set-Cookie");
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(charset)); //reader.ReadToEnd() 表示取得网页的源码流 需要引用 using  IO

                string html = reader.ReadToEnd();
                reader.Close();
                response.Close();
                return(html);
            }
            catch (WebException ex)
            {
                return(ex.ToString());
            }
        }
예제 #23
0
 public string GetDownloadFileInfo(string http_url, string ImportCookiestr)
 {
     //https://airdental.inteware.com.tw/api/project/prostheses/download/5eccc648d6ea6e0b50f0239d
     try
     {
         HttpWebRequest request = (HttpWebRequest)WebRequest.Create(http_url);
         request.Credentials = CredentialCache.DefaultCredentials;
         request.Headers.Add("Cookie", ImportCookiestr);
         request.UserAgent = ".NET Framework Example Client";
         request.Method    = "GET";
         //Response資料
         HttpWebResponse response = (HttpWebResponse)request.GetResponse();
         string          FileName = response.GetResponseHeader("Content-disposition");
         FileName = FileName.Substring(FileName.LastIndexOf(@"'"));
         FileName = UrlDecode(FileName.Replace(@"'", ""));
         long FileSize = response.ContentLength;
         response.Close();
         return(FileName);
     }
     catch
     {
         return(null);
     }
 }
예제 #24
0
        private static void print_log(HttpWebResponse response)
        {
            Stream       streamResponse = response.GetResponseStream();
            StreamReader streamRead     = new StreamReader(streamResponse, System.Text.Encoding.GetEncoding(-0));

            string content_length = response.GetResponseHeader("Content-Length");

            if (content_length == "")
            {
                streamResponse.Close();
                streamRead.Close();
                return;
            }
            if (Int32.Parse(content_length) <= 0)
            {
                streamResponse.Close();
                streamRead.Close();
                return;
            }

            Char[] readBuff = new Char[256];
            int    count    = streamRead.Read(readBuff, 0, 256);

            Console.WriteLine("The contents of the Html page are.......\n");
            while (count > 0)
            {
                String outputData = new String(readBuff, 0, count);
                Console.Write(outputData);
                count = streamRead.Read(readBuff, 0, 256);
            }
            Console.WriteLine();

            // Close the Stream object.
            streamResponse.Close();
            streamRead.Close();
        }
예제 #25
0
 public static string GetRedirectUrl(string url)
 {
     try
     {
         HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
         req.Method    = "HEAD";
         req.Timeout   = 5000;
         req.Referer   = "";
         req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36";
         req.Headers.Add("Cookie", "MONITOR_WEB_ID=2b91ee0d-614c-44e9-bd15-0dbbe27f05c8");
         req.AllowAutoRedirect = false;
         HttpWebResponse myResp = (HttpWebResponse)req.GetResponse();
         //if (myResp.StatusCode == HttpStatusCode.Redirect)
         //{
         //    url = myResp.GetResponseHeader("Location");
         //}
         url = myResp.GetResponseHeader("location");
         return(url);
     }
     catch (Exception ex)
     {
         return("");
     }
 }
예제 #26
0
        public static string RedirectPath(string url)
        {
            StringBuilder sb       = new StringBuilder();
            string        location = string.Copy(url);

            while (!string.IsNullOrWhiteSpace(location))
            {
                sb.AppendLine(location); // you can also use 'Append'
                HttpWebRequest request = HttpWebRequest.CreateHttp(location);
                request.AllowAutoRedirect = false;
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    location = response.GetResponseHeader("Location");
                    if (location.Contains("%3D") && location.Contains("%26"))
                    {
                        var leftIndex  = location.IndexOf("%3D");
                        var rightIndex = location.IndexOf("%26");
                        var appId      = location.Substring(leftIndex + 3, rightIndex - leftIndex - 3);
                        Console.WriteLine($"AppId:{appId}");
                    }
                }
            }
            return(sb.ToString());
        }
예제 #27
0
        /**
         * Invoke request and return response
         */
        private T Invoke <T>(IDictionary <String, String> parameters)
        {
            String                 actionName   = parameters["Action"];
            T                      response     = default(T);
            String                 responseBody = null;
            HttpStatusCode         statusCode   = default(HttpStatusCode);
            ResponseHeaderMetadata rhm          = null;

            if (String.IsNullOrEmpty(config.ServiceURL))
            {
                throw new MarketplaceWebServiceProductsException(
                          new ArgumentException(
                              "Missing serviceURL configuration value. You may obtain a list of valid MWS URLs by consulting the MWS Developer's Guide, or reviewing the sample code published along side this library."));
            }

            /* Add required request parameters */
            AddRequiredParameters(parameters);

            String queryString = GetParametersAsString(parameters);

            byte[] requestData = new UTF8Encoding().GetBytes(queryString);
            bool   shouldRetry = true;
            int    retries     = 0;

            do
            {
                HttpWebRequest request = ConfigureWebRequest(requestData.Length);
                /* Submit the request and read response body */
                try
                {
                    using (Stream requestStream = request.GetRequestStream())
                    {
                        requestStream.Write(requestData, 0, requestData.Length);
                    }
                    using (HttpWebResponse httpResponse = request.GetResponse() as HttpWebResponse)
                    {
                        statusCode = httpResponse.StatusCode;


                        rhm = new ResponseHeaderMetadata(
                            httpResponse.GetResponseHeader("x-mws-request-id"),
                            httpResponse.GetResponseHeader("x-mws-response-context"),
                            httpResponse.GetResponseHeader("x-mws-timestamp"));

                        StreamReader reader = new StreamReader(httpResponse.GetResponseStream(), Encoding.UTF8);
                        responseBody = reader.ReadToEnd();
                    }
                    /* Attempt to deserialize response into <Action> Response type */
                    XmlSerializer serializer = new XmlSerializer(typeof(T));
                    using (StringReader responseReader = new StringReader(responseBody))
                    {
                        response = (T)serializer.Deserialize(responseReader);

                        PropertyInfo pi = typeof(T).GetProperty("ResponseHeaderMetadata");
                        pi.SetValue(response, rhm, null);
                    }
                    shouldRetry = false;
                }
                /* Web exception is thrown on unsucessful responses */
                catch (WebException we)
                {
                    shouldRetry = false;
                    using (HttpWebResponse httpErrorResponse = (HttpWebResponse)we.Response as HttpWebResponse)
                    {
                        if (httpErrorResponse == null)
                        {
                            throw new MarketplaceWebServiceProductsException(we);
                        }
                        statusCode = httpErrorResponse.StatusCode;
                        using (StreamReader reader = new StreamReader(httpErrorResponse.GetResponseStream(), Encoding.UTF8))
                        {
                            responseBody = reader.ReadToEnd();
                        }
                    }

                    /* Attempt to deserialize response into ErrorResponse type */
                    using (StringReader responseReader = new StringReader(responseBody))
                    {
                        try
                        {
                            XmlSerializer serializer    = new XmlSerializer(typeof(ErrorResponse));
                            ErrorResponse errorResponse = (ErrorResponse)serializer.Deserialize(responseReader);
                            Error         error         = errorResponse.Error[0];

                            bool retriableError =
                                (statusCode == HttpStatusCode.InternalServerError ||
                                 statusCode == HttpStatusCode.ServiceUnavailable);

                            retriableError = retriableError && !(REQUEST_THROTTLED_ERROR_CODE.Equals(error.Code));
                            if (retriableError && retries < config.MaxErrorRetry)
                            {
                                shouldRetry = true;
                                PauseOnRetry(++retries, statusCode, rhm);
                                continue;
                            }
                            else
                            {
                                shouldRetry = false;
                            }

                            /* Throw formatted exception with information available from the error response */
                            throw new MarketplaceWebServiceProductsException(
                                      error.Message,
                                      statusCode,
                                      error.Code,
                                      error.Type,
                                      errorResponse.RequestId,
                                      errorResponse.ToXML(),
                                      rhm);
                        }
                        catch (MarketplaceWebServiceProductsException mwsErr)
                        {
                            throw mwsErr;
                        }
                        catch (Exception e)
                        {
                            throw ReportAnyErrors(responseBody, statusCode, rhm, e);
                        }
                    }
                }

                /* Catch other exceptions, attempt to convert to formatted exception,
                 * else rethrow wrapped exception */
                catch (Exception e)
                {
                    throw new MarketplaceWebServiceProductsException(e);
                }
            } while (shouldRetry);

            return(response);
        }
예제 #28
0
        static void Main(string[] args)
        {
            /*************
             *  Login
             **************/
            try
            {
                Console.Write("Try login... ");

                // payload - {"remember":true,"email":"email","password":"******"}
                string payloadStr = "{\"remember\":true,\"email\":\"" + email + "\",\"password\":\"" + password + "\"}";

                // Set payload
                byte[] payload = Encoding.UTF8.GetBytes(payloadStr);

                // Create request
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(loginUrl);
                webRequest.Method = "POST";

                // Write to request stream
                Stream reqStream = webRequest.GetRequestStream();
                reqStream.Write(payload, 0, payload.Length);

                // Retrieve response
                HttpWebResponse response   = (HttpWebResponse)webRequest.GetResponse();
                Stream          respStream = response.GetResponseStream();

                //Print response
                using (StreamReader reader = new StreamReader(respStream))
                {
                    foreach (string headerName in response.Headers.Keys)
                    {
                        if (headerName == "Set-Cookie")
                        {
                            cookieInfo = response.GetResponseHeader(headerName);
                            xsrfToken  = cookieInfo.Substring(56, 40);
                            Console.Write("SUCCESS");
                            Console.WriteLine();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine();
            }

            /*************
             *  Stats
             **************/
            try
            {
                Console.Write("Try stats... ");

                // payload - {"chart":"progress","sb_id":"sboardId","stat_id":null,"dates":{"dateFrom":"dateFrom","dateTo":"dateTo"}}
                string payloadStr = "{\"chart\":\"progress\",\"sb_id\":" + sboardId
                                    + ",\"stat_id\":null,\"dates\":{\"dateFrom\":\"" + dateFrom
                                    + "\",\"dateTo\":\"" + dateTo
                                    + "\"}}";

                // Set payload
                byte[] payload = Encoding.UTF8.GetBytes(payloadStr);

                // Create request
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(statsUrl);
                webRequest.Method = "POST";
                webRequest.Headers.Add("Cookie:" + cookieInfo);
                webRequest.Headers.Add("X-XSRF-TOKEN:" + xsrfToken);

                // Write to request stream
                Stream reqStream = webRequest.GetRequestStream();
                reqStream.Write(payload, 0, payload.Length);

                // Retrieve response
                HttpWebResponse response   = (HttpWebResponse)webRequest.GetResponse();
                Stream          respStream = response.GetResponseStream();

                //Print response
                using (StreamReader reader = new StreamReader(respStream))
                {
                    dynamic jsonResponse = JSON.JsonConvert.DeserializeObject(reader.ReadToEnd());
                    string  index        = "";

                    Console.Write("SUCCESS");
                    Console.WriteLine();
                    Console.WriteLine();
                    Console.WriteLine("Results from " + dateFrom + " to " + dateTo);
                    Console.WriteLine("-------------------------------------");

                    // Output to console/file
                    using (StreamWriter writer = new StreamWriter(outputPath))
                    {
                        writer.WriteLine("0,10,20,30,40,50,60,70,80,90,100");

                        for (int i = 0; i <= 10; i++)
                        {
                            index = (i > 0) ? i.ToString() + "0" : i.ToString();
                            writer.Write((i == 10) ? jsonResponse["result"]["data"][index] : jsonResponse["result"]["data"][index] + ",");
                            Console.WriteLine(index + "% :   " + jsonResponse["result"]["data"][index] + " people");
                        }
                    }

                    Console.WriteLine();
                    Console.WriteLine("Generate time: " + jsonResponse["result"]["generate_time"]);
                    Console.WriteLine("Generated on:  " + DateTime.Now.ToString());
                    Console.WriteLine();
                    Console.WriteLine("Output to:  " + outputPath);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("UNSUCCESSFUL: " + ex.Message);
                Console.WriteLine();
            }

            /*************
             *  Logout
             **************/
            try
            {
                Console.Write("Try logout...");

                // Create request
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(logoutUrl);
                webRequest.Method = "POST";
                webRequest.Headers.Add("Cookie:" + cookieInfo);
                webRequest.Headers.Add("X-XSRF-TOKEN:" + xsrfToken);

                // Retrieve response
                HttpWebResponse response   = (HttpWebResponse)webRequest.GetResponse();
                Stream          respStream = response.GetResponseStream();

                //Print response
                using (StreamReader reader = new StreamReader(respStream))
                {
                    dynamic jsonResponse = JSON.JsonConvert.DeserializeObject(reader.ReadToEnd());
                    Console.Write((jsonResponse["success"] == "True") ? " Logged out successfully" : " Logout failed");
                    Console.WriteLine();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("UNSUCCESSFUL: " + ex.Message);
            }
        }
예제 #29
0
        //#if !NET35 && !NET40
        /// <summary>
        /// 从Url下载,并保存到指定目录
        /// </summary>
        /// <param name="url">需要下载文件的Url</param>
        /// <param name="filePathName">保存文件的路径,如果下载文件包含文件名,按照文件名储存,否则将分配Ticks随机文件名</param>
        /// <param name="timeOut">超时时间</param>
        /// <returns></returns>
        public static string Download(string url, string filePathName, int timeOut = 999)
        {
            var dir = Path.GetDirectoryName(filePathName) ?? "/";

            Directory.CreateDirectory(dir);

#if NET35 || NET40 || NET45
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method  = "GET";
            request.Timeout = timeOut;

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            using (Stream responseStream = response.GetResponseStream())
            {
                string responseFileName         = null;
                var    contentDescriptionHeader = response.GetResponseHeader("Content-Disposition");
                if (!string.IsNullOrEmpty(contentDescriptionHeader))
                {
                    var fileName = Regex.Match(contentDescriptionHeader, @"(?<=filename="")([\s\S]+)(?= "")", RegexOptions.IgnoreCase).Value;

                    responseFileName = Path.Combine(dir, fileName);
                }

                var fullName = responseFileName ?? Path.Combine(dir, GetRandomFileName());

                using (var fs = File.Open(filePathName, FileMode.OpenOrCreate))
                {
                    byte[] bArr = new byte[1024];
                    int    size = responseStream.Read(bArr, 0, (int)bArr.Length);
                    while (size > 0)
                    {
                        fs.Write(bArr, 0, size);
                        fs.Flush();
                        size = responseStream.Read(bArr, 0, (int)bArr.Length);
                    }
                }

                return(fullName);
            }
#else
            System.Net.Http.HttpClient httpClient = SenparcDI.GetRequiredService <SenparcHttpClient>().Client;
            using (var responseMessage = httpClient.GetAsync(url).Result)
            {
                if (responseMessage.StatusCode == HttpStatusCode.OK)
                {
                    string responseFileName = null;
                    //ContentDisposition可能会为Null
                    if (responseMessage.Content.Headers.ContentDisposition != null &&
                        responseMessage.Content.Headers.ContentDisposition.FileName != null &&
                        responseMessage.Content.Headers.ContentDisposition.FileName != "\"\"")
                    {
                        responseFileName = Path.Combine(dir, responseMessage.Content.Headers.ContentDisposition.FileName.Trim('"'));
                    }

                    var fullName = responseFileName ?? Path.Combine(dir, GetRandomFileName());
                    using (var fs = File.Open(fullName, FileMode.Create))
                    {
                        using (var responseStream = responseMessage.Content.ReadAsStreamAsync().Result)
                        {
                            responseStream.CopyTo(fs);
                            fs.Flush();
                        }
                    }
                    return(fullName);
                }
                else
                {
                    return(null);
                }
            }
#endif
        }
예제 #30
0
        public static void Main(string[] args)
        {
            String url      = "http://dm-51.data.aliyun.com/rest/160601/ocr/ocr_idcard.json";
            String appcode  = "你自己的AppCode";
            String img_file = "图片路径";

            //如果输入带有inputs, 设置为True,否则设为False
            bool is_old_format = false;

            //如果没有configure字段,config设为''
            //String config = '';
            String config = "{\\\"side\\\":\\\"face\\\"}";

            String method = "POST";

            String querys = "";

            FileStream   fs = new FileStream(img_file, FileMode.Open);
            BinaryReader br = new BinaryReader(fs);

            byte[] contentBytes = br.ReadBytes(Convert.ToInt32(fs.Length));
            String base64       = System.Convert.ToBase64String(contentBytes);
            String bodys;

            if (is_old_format)
            {
                bodys = "{\"inputs\" :" +
                        "[{\"image\" :" +
                        "{\"dataType\" : 50," +
                        "\"dataValue\" :\"" + base64 + "\"" +
                        "}";
                if (config.Length > 0)
                {
                    bodys += ",\"configure\" :" +
                             "{\"dataType\" : 50," +
                             "\"dataValue\" : \"" + config + "\"}" +
                             "}";
                }
                bodys += "]}";
            }
            else
            {
                bodys = "{\"image\":\"" + base64 + "\"";
                if (config.Length > 0)
                {
                    bodys += ",\"configure\" :\"" + config + "\"";
                }
                bodys += "}";
            }
            HttpWebRequest  httpRequest  = null;
            HttpWebResponse httpResponse = null;

            if (0 < querys.Length)
            {
                url = url + "?" + querys;
            }

            if (url.Contains("https://"))
            {
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
            }
            else
            {
                httpRequest = (HttpWebRequest)WebRequest.Create(url);
            }
            httpRequest.Method = method;
            httpRequest.Headers.Add("Authorization", "APPCODE " + appcode);
            //根据API的要求,定义相对应的Content-Type
            httpRequest.ContentType = "application/json; charset=UTF-8";
            if (0 < bodys.Length)
            {
                byte[] data = Encoding.UTF8.GetBytes(bodys);
                using (Stream stream = httpRequest.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
            }
            try
            {
                httpResponse = (HttpWebResponse)httpRequest.GetResponse();
            }
            catch (WebException ex)
            {
                httpResponse = (HttpWebResponse)ex.Response;
            }

            if (httpResponse.StatusCode != HttpStatusCode.OK)
            {
                Console.WriteLine("http error code: " + httpResponse.StatusCode);
                Console.WriteLine("error in header: " + httpResponse.GetResponseHeader("X-Ca-Error-Message"));
                Console.WriteLine("error in body: ");
                Stream       st     = httpResponse.GetResponseStream();
                StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8"));
                Console.WriteLine(reader.ReadToEnd());
            }
            else
            {
                Stream       st     = httpResponse.GetResponseStream();
                StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8"));
                Console.WriteLine(reader.ReadToEnd());
            }
            Console.WriteLine("\n");
        }