2016-11-22 7 views
0

私が見つけた指示に従おうとしましたが、それでも動作しません。XMLを使用しているときにASP.NET Web APIがオブジェクトのNULLを返します

私は私のサーバーは、私はクライアント側で次の行

config.Formatters.XmlFormatter.UseXmlSerializer = true; 

を追加したPOSTメソッド私のWebApiConfig.csで

public IHttpActionResult Post([FromBody]TodoItem item) 
    { 
     if (item != null) 
     { 
      TodoRepository.Current.Add(item); 
      return Ok(item); 
     } 
     return BadRequest("Object is null"); 
    } 

を以下のいたクラス

public class TodoItem 
{   
    public int Id { get; set; }   
    public string Name { get; set; }   
    public bool IsComplete { get; set; } 
    public TodoItem() { } 
} 

を以下している

次のようにHttpClientを使用しています:

var postTask = client.PostAsXmlAsync<TodoItem>("", item); 

サーバー上のMy Postメソッドは、アイテムオブジェクトに対してnullを受け取ります。

+0

に見える私は、URLを見ることができないNilesh Thakkar

の助けを借りて問題を解決しましたあなたの電話。例: 'var respone = await httpClient.PostAsXmlAsync(requestUri、Item);' メソッドはどのように呼び出されますか? –

+0

URLは 'client.BaseAddress = new Uri(" http:// localhost:5342/api/todos/");' postTask = client.PostAsJsonAsyncを使用すると完璧に動作します。( ""、item ); ' –

+0

あなたは[ここに記載された答えを試してください(http://stackoverflow.com/a/25494252/309395) –

答えて

0

おかげで、私は、次の拡張メソッド

public static class HttpExtensions 
{ 
    public static Task<HttpResponseMessage> PostAsXmlWithSerializerAsync<T>(this HttpClient client, string requestUri, T value) 
    { 
     return client.PostAsync(requestUri, value, 
         new XmlMediaTypeFormatter { UseXmlSerializer = true }); 
    } 
} 

を追加したのHttpClientからの呼び出しが今

var postTask = client.PostAsXmlWithSerializerAsync<TodoItem>("", item); 
関連する問題