将httppost转换为httpget

时间:2016-07-22 06:18:11

标签: c#

我发现这段代码对我来说很有用,很容易使用,但是我遇到了一个简单的问题

private static string DoGET(string URL, NameValueCollection QueryStringParameters = null, NameValueCollection RequestHeaders = null)
        {
            string ResponseText = null;
            using (WebClient client = new WebClient())
            {
                try
                {
                    if (RequestHeaders != null)
                    {
                        if (RequestHeaders.Count > 0)
                        {
                            foreach (string header in RequestHeaders.AllKeys)
                                client.Headers.Add(header, RequestHeaders[header]);
                        }
                    }
                    if (QueryStringParameters != null)
                    {
                        if (QueryStringParameters.Count > 0)
                        {
                            foreach (string parm in QueryStringParameters.AllKeys)
                                client.QueryString.Add(parm, QueryStringParameters[parm]);
                        }
                    }
                    byte[] ResponseBytes = client.DownloadData(URL);
                    ResponseText = Encoding.UTF8.GetString(ResponseBytes);
                }
                catch (WebException exception)
                {
                    if (exception.Response != null)
                    {
                        var responseStream = exception.Response.GetResponseStream();

                        if (responseStream != null)
                        {
                            using (var reader = new StreamReader(responseStream))
                            {
                                //Response.Write(reader.ReadToEnd());
                            }
                        }
                    }
                }
            }
            return ResponseText;
        }

我想将此代码转换为HTTP Post方法,当我将client.DownloadData(URL)更改为client.UploadValues(URL)时,它需要NameValueCollection作为第二个参数,但代码的顶部添加了它们进入客户端,

我不添加" QueryStringParameters"进入客户端并将其用作第二个参数?

1 个答案:

答案 0 :(得分:0)

你问:我不添加" QueryStringParameters"进入客户端并将其用作第二个参数?

答案是:是的

说明

WebClient类的QueryString属性用于构建作为查询字符串附加到WebClient URI的名称/值对,因此主要用于Get请求。

假设你想要,你仍然可以:

byte[] ResponseBytes = client.UploadValues(URL, client.QueryString);

但这显然是浪费,因为你也可以直接传递它。