2017-01-31 8 views
0

У меня есть объект httpWebRequest.Как правильно отправить json с помощью httpWebRequest?

Он инициализируется так:

 var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://myURL.com"); // This is actually my company URL I can't show 
     httpWebRequest.ContentType = "application/json"; 
     httpWebRequest.Method = "POST"; 

Тогда я хочу, чтобы отправить этот URL JSon DATAS. После попыток, я полагал, что я делаю это неправильно, но я не понимаю, что это такое ... Вот где я посылаю его DATAS: Это, кажется, не работает

 using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
     { 
      List<string> datas = new List<string>(); 
      datas.Add("1"); 


      string json = Newtonsoft.Json.JsonConvert.SerializeObject(datas); 

      streamWriter.Write(json); 
      streamWriter.Flush(); 
      streamWriter.Close(); 
     } 

. Есть ли способ поймать URL-адрес, который я отправляю? Я попробовал Fiddler, но я не вижу своей просьбы.

Кроме того, этот код работает с хромированной консолью:

jQuery.ajax({ 
       'url': 'http://myURL.com', 
       'type': 'POST', 
       'data': {data:[7]}, 
       'success': function (data) { 
        console.log(data); 
       } 
      }); 
+0

Вы отправляете на «http: // myURL» ', URL-адрес, который вы передали функции Create. Может быть, вы имеете в виду «контент»? Эта статья может помочь найти причину проблемы: https://blogs.msdn.microsoft.com/benjaminperkins/2014/05/05/using-network-tracing-to-debug-system-net-based-issues/ – Gusman

+0

URL-адрес на самом деле не этот, и если это хорошо, я его протестировал. Я отредактирую свой код – Cher

+0

Да, я понимаю, что это не ваш реальный URL, я имел в виду, что вы будете называть все, что вы передали функции 'Create'. – Gusman

ответ

1

Из кода вы используете в Chrome обозначаются ваша структура данных не является правильной.

Во-первых, вам нужен класс для хранения данных, позволяет назвать его DataHolder:

public class DataHolder 
{ 
    public int[] data { get; set; } 
} 

Так что теперь вам нужно заполнить его:

var newData = new DataHolder{ data = new int[] { 1 } }; 

И теперь вы можете сериализовать его и его должно работать:

string json = Newtonsoft.Json.JsonConvert.SerializeObject(newData); 

EDIT: как примечание, в предыдущем вопросе вы вывесили вы пытались отправить "{ data: [1] }", который является неправильным, он должен быть "{ \"data\": [1] }", но лучше придерживаться класса с правильной структурой и позволить сериализатору справляться с этими деталями реализации.

 Смежные вопросы

  • Нет связанных вопросов^_^