繁体   English   中英

C#HttpWebRequest获取响应字符串

[英]c# HttpWebRequest get response string

我正在尝试通过HTTPS Post发送一些未经认证的数据。 但是我得到的是null,但是响应状态代码是可以的。 为什么是这样? 任何帮助将不胜感激。

我想从https://test.com/post_test.php接收“ hello”字符串。 我看到了许多与此相关的示例,但没有一个对我有用。 有人知道我在想什么吗? 有人可以指导我怎么做吗?

提前致谢!

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"]);
    ?>

您为什么不只是简单地请求Url而没有任何幻想?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM