Добавьте пользовательские заголовки, используя HttpWebRequest - PullRequest
13 голосов
/ 23 марта 2012

Я не совсем уверен, к какому типу заголовков относятся эти выделенные значения, но как мне добавить их с помощью HttpWebRequest?

HTTP Header

Считается ли выделенная часть телом http-запроса или данных заголовка? Другими словами, какой путь является правильным?

Вот код, который я сейчас использую:

HttpWebRequest request = (HttpWebRequest) WebRequest.Create("/securecontrol/reset/passwordreset");
request.Headers.Add("Authorization", "Basic asdadsasdas8586");
request.ContentType = "application/x-www-form-urlencoded";
request.Host = "www.xxxxxxxxxx.com";
request.Method = "POST";
request.Proxy = null;
request.Headers.Add("&command=requestnewpassword");
request.Headers.Add("&application=netconnect");

Но лучше ли использовать следующее для создания запроса Http выше?

string reqString = "&command=requestnewpassword&application=netconnect";
byte[] requestData = Encoding.UTF8.GetBytes(reqString);

HttpWebRequest request = (HttpWebRequest) WebRequest.Create("/securecontrol/reset/passwordreset");
request.Headers.Add("Authorization", "Basic ashAHasd87asdHasdas");
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = requestData.Length;
request.Proxy = null;
request.Host = "www.xxxxxxxxxx.com";
request.Method = "POST";

using (Stream st = request.GetRequestStream())
st.Write(requestData, 0, requestData.Length);

Ответы [ 3 ]

16 голосов
/ 25 мая 2016

Простой метод создания службы, добавления заголовков и чтения ответа JSON,

private static void WebRequest()
{
    const string WEBSERVICE_URL = "<<Web Service URL>>";
    try
    {
        var webRequest = System.Net.WebRequest.Create(WEBSERVICE_URL);
        if (webRequest != null)
        {
            webRequest.Method = "GET";
            webRequest.Timeout = 20000;
            webRequest.ContentType = "application/json";
            webRequest.Headers.Add("Authorization", "Basic dcmGV25hZFzc3VudDM6cGzdCdvQ=");
            using (System.IO.Stream s = webRequest.GetResponse().GetResponseStream())
            {
                using (System.IO.StreamReader sr = new System.IO.StreamReader(s))
                {
                    var jsonResponse = sr.ReadToEnd();
                    Console.WriteLine(String.Format("Response: {0}", jsonResponse));
                }
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }
}
13 голосов
/ 23 марта 2012

ИМХО это считается неверно сформированными данными заголовка.

На самом деле вы хотите отправить эти пары имя-значение в качестве содержимого запроса (так работает POST) , а не как заголовки .

Второй путь верен.

0 голосов
/ 13 декабря 2018

Вы должны сделать ex.StackTrace вместо ex.ToString ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...