2017-02-03 26 views
0

我有一个对象。 我'这是发送给我的API的项目是这样的:HTTP内容到字符串/模型

mymodel obj = new mymodel(); 
obj.prop = "this"; 
obj.prop2 = "prop2"; 

var content = JsonConvert.SerializeObject(obj); 
var buffer = System.Text.Encoding.UTF8.GetBytes(content); 
var byteContent = new ByteArrayContent(buffer); 
byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 

string response = ""; 

using (HttpClient client = new HttpClient()) 
{ 
var rez = await client.PostAsync(uri + myenum.Insert, byteContent).ConfigureAwait(false); 
response = rez.ToString(); 
} 

在我的API方法,我想该字符串或HTTP内容再次转换成模型。

[ActionName("Insert")] 
[HttpGet] 
public bool Insert(string obj) 
{ 
try 
{ 
mymodel model = JsonConvert.DeserializeObject<mymodel>(obj); 

如何处理对象我是用我的API方法postasync发送?

任何帮助?

回答

0

首先,您不能在HTTPGet方法上使用PostAsync。

其次,我不明白你的意思。如果你使用json,那么你不必做任何事情。只要有一个简单的客户端的方法,例如:

public async Task<TResult> PostAsync<TResult, TInput>(string uriString, TInput payload = null) where TInput : class 
    { 
     var uri = new Uri(uriString); 
     using (var client = GetHttpClient()) 
     { 
      var jsonContent = JsonConvert.SerializeObject(payload, Formatting.Indented, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }); 
      HttpResponseMessage response = await client.PostAsync(uri, new StringContent(jsonContent, Encoding.UTF8, "application/json")); 
      if (response.StatusCode != HttpStatusCode.OK) 
      { 
       //Log.Error(response.ReasonPhrase); 
       return default(TResult); 
      } 
      var json = await response.Content.ReadAsStringAsync(); 
      return JsonConvert.DeserializeObject<TResult>(json); 
     } 
    } 

,你可以直接添加在同一个对象的API像

[ActionName("Insert")] 
[HttpPost] 
public bool Insert(YourObjectClass obj) 
{ 
    try 
    { 
     ....code.... 
    } 
}