2016-01-27
zelder
2016-01-27
27/01
2016

Простой Web-запрос на .NET


Пример POST запроса


public void Request()
{
            Uri uri = new Uri("https://api.zedk.ru/api/login/");
            WebRequest request = HttpWebRequest.Create(uri);
            request.Credentials = CredentialCache.DefaultCredentials;
            ((HttpWebRequest)request).UserAgent = "zedk worker";
            ((HttpWebRequest)request).Accept = "text/html,application/xhtml+xml,application/xml;";
            request.Proxy = null;
            request.Method = "POST";
            request.ContentType = "text/html; charset=utf-8";
            ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
            //! params
            NameValueCollection outgoingQueryString = new NameValueCollection();
            outgoingQueryString.Add("login", "yourlogin");
            outgoingQueryString.Add("password", "yourpass");
            string postData = outgoingQueryString.ToString();
            //+ to bytes
            ASCIIEncoding ascii = new ASCIIEncoding();
            byte[] postBytes = ascii.GetBytes(postData.ToString());
            request.ContentLength = postBytes.Length;
            //! add post data to request
            using (Stream postStream = request.GetRequestStream())
            {
                postStream.Write(postBytes, 0, postBytes.Length);
                postStream.Flush();
            }
            try
            {
                ZeConsole.WriteSmuzy("requesting..");
                using (WebResponse response = request.GetResponse())
                {
                    using (StreamReader responseReader = new StreamReader(response.GetResponseStream()))
                    {
                        string responseData = responseReader.ReadToEnd();
                        ZeConsole.WriteOk();
                        ZeConsole.WriteLineLight(responseData); // ОТВЕТ
                        ZeConsole.WriteLineSmuzy("end request");
                    }
                }
            }
            catch(Exception e)
            {
                ZeConsole.WriteFail();
                _onError(e);
            }
}

private bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true;
}


Запрос GET будет чуть иначе. Параметры передаются иначе.


.