2017-01-31 8 views
0

私はhttpWebRequestオブジェクトを持っています。httpWebRequestでjsonを正しく送信する方法は?

それは、このように初期化される:

 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件のデータを送信したいです。

 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をキャッチする方法はありますか?私はフィドラーを試しましたが、私の要求はありません。

また、このコードはクロームコンソールで動作します:

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

「作成」機能に渡したURL「http:// myURL」に送信します。たぶんあなたは「内容」を意味するでしょうか?この資料は、問題をトレースするのに役立つ場合があります。https://blogs.msdn.microsoft.com/benjaminperkins/2014/05/05/using-network-tracing-to-debug-system-net-based-issues/ – Gusman

+0

URLは実際にはこのURLではなく、うまくいけばテストしました。私は自分のコードを編集します – Cher

+0

はい、私はそれがあなたの本当のURLではないことを理解しています、私はあなたが 'Create'関数に渡したものを呼び出すことを意味しました。 – Gusman

答えて

1

クロームで使用するコードから、あなたのデータ構造が正しくない表記します。

まず、あなたがデータを格納するクラスを必要とする、それを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] }"である必要がありますが、正しい構造を持つクラスに固執し、シリアライザにその実装の詳細を処理させるようにしてください。

関連する問題