2015-08-04 3 views
0

Как я могу сделать HTTP-запрос и отправить Json-данные с заголовками и прочитать ответ?Http post и получить для json -C#

Третья сторона предоставила определенные полномочия для использования своего API. Используя эти учетные данные, мне нужно вызвать API и прочитать ответ. Мне нужно отправить заголовок с именем SIGNATURE вместе с данными запроса. Значение подписи - данные зашифрованного запроса.

Я могу выполнить запрос POST, но не знаю, как добавить заголовок.

Мой код как этот

HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("URL"); 
httpWebRequest.ContentType = "text/json"; 
httpWebRequest.Method = "POST"; 
httpWebRequest.Headers.Add("SIGNATURE", sEncrypteddata) 
using (StreamWriter streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
{ 
    string json = "{\"id\":\"2423432432\"," + 
        "\"uid\":\"id123\","+ 
        "\"pwd\":\"pass\","+ 
        "\"apiKey\":\"2423432432\","+ 
        "\"paymentCategory\":0"+ 
        "\"paymentType\":0}"; 

    streamWriter.Write(json); 
    streamWriter.Flush(); 
    streamWriter.Close(); 
} 
System.Net.ServicePointManager.Expect100Continue = false; 
HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream())) 
{ 
    string result = streamReader.ReadToEnd(); 
} 

это правильный путь?

+0

Имейте в виду, что этот вопрос задан раньше ... – Fredrik

ответ

1

Я предполагаю, что вы используете класс HttpClient. Этот класс имеет свойство под названием DefaultRequestHeaders. Вся информация заголовка внутри этого свойства должна быть отправлена ​​с каждым запросом, который вы делаете с экземпляром.

0

Вам необходимо переместить заголовки до того, как запрос будет работать, поскольку поток запросов добавляет тело.

Webrequest реализован внутри, перед тем, как написать Body finish with Header, и после его формата в потоке его готов к отправке.

Реализация webrequest в отражателе или какой-либо такой инструмент для декомпиляции, вы можете найти логику.