2017-12-25 11 views
1

うーん...私はここにStackOverflowで質問をたくさん読んで、まだそれのための答えが得られませんでした、私はこのウェブAPIコントローラを持つヌルPOSTデータを送信しますそれに小さなテスター:はHttpClientを

static void Main(string[] args) 
{ 
    HttpClient client = new HttpClient(); 
    client.BaseAddress = new Uri("http://localhost:54916/"); 
    client.DefaultRequestHeaders.Accept.Clear(); 


    var content = new StringContent("<data>Hello</data>", Encoding.UTF8, "application/json"); 

    var response = client.PostAsync("api/ERS?ID=123", content); 

    response.ContinueWith(p => 
    { 
     string result = p.Result.Content.ReadAsStringAsync().Result; 
     Console.WriteLine(result); 
    }); 
    Console.ReadKey(); 
} 

私は常にAPIのパラメータDataNULLを取得します。

私はテスターに​​これらの行を追加してみました:

var values = new Dictionary<string, string>(); 
values.Add("Data", "Data"); 
var content = new FormUrlEncodedContent(values); 
まだ

NULL

client.DefaultRequestHeaders 
          .Accept 
          .Add(new MediaTypeWithQualityHeaderValue("application/json")); 

まだNULL、私はまたしてコンテンツを置き換えます。

私はへの切り替え要求を試してみました:

WebClient client = new WebClient(); 
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; 

var values = new NameValueCollection(); 
values["Data"] = "hello"; 
var task = client.UploadValuesTaskAsync("http://localhost:54916/api/ERS?ID=123", values); 
task.ContinueWith((p) => 
{ 
    string response = Encoding.UTF8.GetString(p.Result); 
    Console.WriteLine(response); 
}); 

が、デバッガはまだ言って 'NO!' DataはまだNULLです。

私は問題なくIDを取得します。

+1

追記では、 'こんにちはは'コンテンツタイプが –

答えて

1

あなたはJSON文字列として送信したい場合は、(Newtonsoft.Jsonを使用して)これを行う必要があります:あなたは、ほぼ右FormUrlEncodedContentでそれを得た

var serialized = JsonConvert.SerializeObject("Hello"); 
var content = new StringContent(serialized, Encoding.UTF8, "application/json"); 

、何をしなければならなかったことは、空でそれを送っていました名前は、this exampleのように:

var content = new FormUrlEncodedContent(new[] 
{ 
    new KeyValuePair<string, string>("", "Hello") 
}); 

var response = client.PostAsync("api/ERS?ID=123", content); 
+0

感謝の男を示唆するようなJSONではない、私にはXMLです!それはうまく働いた...理由を理解していない – Izikon