2011-11-20 13 views
5

RESTサービスを使用するためにJSONペイロードを渡す方法。C#のHttpClientのJSONペイロード?

var requestUrl = "http://example.org"; 

using (var client = new HttpClient()) 
{ 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualifiedHeaderValue("application/json")); 
    var result = client.Post(requestUrl); 

    var content = result.Content.ReadAsString(); 
    dynamic value = JsonValue.Parse(content); 

    string msg = String.Format("{0} {1}", value.SomeTest, value.AnotherTest); 

    return msg; 
} 

はどうやってリクエストのパラメータとして、このような何かを渡すか?:私にはない厳密にHTTP GETリクエストとして

{"SomeProp1":"abc","AnotherProp1":"123","NextProp2":"zyx"} 

答えて

0

を:ここで

は、私がしようとしていますものですJSONをそのままの状態で投稿することができると思います。URLをエンコードしてクエリ文字列引数として渡す必要があります。

あなたができることは、JSONをWebリクエスト/ WebClient経由でPOSTリクエストのコンテンツ本体に送信することです。

あなたは文字列としてあなたのJSONペイロードを送信するにはMSDNからこのサンプルコードを変更することができ、それはトリックを行う必要があります。

http://msdn.microsoft.com/en-us/library/debx8sh9.aspx

+0

client.Postについて私は自分のコードを修正しました。 – TruMan1

2

生のJSONを投稿する方法を示す同様の回答です:

Json Format data from console application to service stack

const string RemoteUrl = "http://www.servicestack.net/ServiceStack.Hello/servicestack/hello"; 

var httpReq = (HttpWebRequest)WebRequest.Create(RemoteUrl); 
httpReq.Method = "POST"; 
httpReq.ContentType = httpReq.Accept = "application/json"; 

using (var stream = httpReq.GetRequestStream()) 
using (var sw = new StreamWriter(stream)) 
{ 
    sw.Write("{\"Name\":\"World!\"}"); 
} 

using (var response = httpReq.GetResponse()) 
using (var stream = response.GetResponseStream()) 
using (var reader = new StreamReader(stream)) 
{ 
    Assert.That(reader.ReadToEnd(), Is.EqualTo("{\"Result\":\"Hello, World!\"}")); 
}