c # HttpWebRequest получить строку ответа - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь отправить некоторые данные через HTTPS Post без сертификации.Но я получаю нулевое значение, однако код статуса ответа в порядке.Почему это?Любая помощь будет принята с благодарностью.

Я хочу получить строку "привет" от https://test.com/post_test.php. Я видел много примеров, связанных с этим, но ни один из них не работает для меня.Кто-нибудь знает, чего мне не хватает?Кто-нибудь может подсказать мне, как это сделать?

Заранее спасибо!

c # код:

    private static bool ValidateRemoteCertificate(object sender,X509Certificate certificate,X509Chain chain,SslPolicyErrors policyErrors)
    {
        return true;
    }

    private String SendHttpWebPost(string strUrl, string strData)
    {
        string result = string.Empty;
        ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(ValidateRemoteCertificate);

        HttpWebRequest request = null;
        HttpWebResponse response = null;
        try
        {
            Uri url = new Uri(strUrl);
            request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = WebRequestMethods.Http.Post;
            request.KeepAlive = true;
            request.Timeout = 5000;

            // encoding
            byte[] data = Encoding.UTF8.GetBytes(strData);
            request.ContentType = "application/json";
            request.ContentLength = data.Length;

            // send request
            Stream dataStream = request.GetRequestStream();
            dataStream.Write(data, 0, data.Length);
            dataStream.Flush();
            dataStream.Close();

            // get response
            response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();
            string strStatus = ((HttpWebResponse)response).StatusDescription;
            StreamReader streamReader = new StreamReader(responseStream);
            result = streamReader.ReadToEnd();

            // close connection
            streamReader.Close();
            responseStream.Close();
            response.Close();
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
        return result;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
            MessageBox.Show(SendHttpWebPost("https://test.com/post_test.php", "data=hello"));
    }

php код:

    <?php
            echo($_REQUEST["data"]);
    ?>

1 Ответ

0 голосов
/ 01 июня 2018

Почему бы вам просто не запросить URL без какой-либо фантазии?

HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(strUrl);
Request.Method = "GET";
Request.KeepAlive = true;

HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();

if (Response.StatusCode == HttpStatusCode.OK) {
     ....
}
...