这是我的Web API学习阶段。我创建了一个示例Web API应用程序,其中我使用了序列化(xml / json)。如果我从Firefox的Rest Client发出请求,一切正常。
但是现在我正在使用HTTPCLIENT& amp; HttpResponseMessage。
这是我在Console中的方法:
public void GetData()
{
HttpClient cons = new HttpClient();
cons.BaseAddress = new Uri("http://localhost:50524/");
cons.DefaultRequestHeaders.Accept.Clear();
cons.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
MyAPIGet(cons).Wait();
}
static async Task MyAPIGet(HttpClient cons)
{
using (cons)
{
HttpResponseMessage res = await cons.GetAsync("api/Authors/GetAuthor/1");
res.EnsureSuccessStatusCode();
if (res.IsSuccessStatusCode)
{
// Books book = await res.Content.ReadAsAsync<Books>();
Author author = await res.Content.ReadAsAsync<Author>();
Console.WriteLine("\n");
Console.WriteLine("---------------------Calling Get Operation------------------------");
Console.WriteLine("\n");
Console.WriteLine("authorId authorName BookId");
Console.WriteLine("-----------------------------------------------------------");
Console.WriteLine("{0}\t{1}\t\t{2}", author.Id, author.Name, author.BookId);
Console.ReadLine();
}
}
}
错误:
{&#34;转换值时出错 \&#34; {\&#34;标识\&#34;:1,\&#34;名称\&#34;:\&#34;安基塔\&#34; \&#34; BOOKID \&#34;:1,\&#34;图书\&#34;:[]} \&#34;输入 &#39; WebAPI_ConsumerConsole.Domain.Author&#39 ;.路径&#39;&#39;,第1行,位置 58&#34;}
以下是我在Web API中的方法:
public IHttpActionResult GetAuthor(int id)
{
Author author = db.Authors.Find(id);
if (author == null)
{
return NotFound();
}
return Ok(author);
}
如果我从服务方法返回作者错误我进入控制台:
{&#34;第1行位置错误69.期待元素&#39;作者&#39;从 命名空间 &#39; http://schemas.datacontract.org/2004/07/WebAPI_ConsumerConsole.Domain&#39; .. 遇到过元素&#39;名称&#39;字符串&#39;,名称空间 &#39; http://schemas.microsoft.com/2003/10/Serialization/&#39 ;. &#34;}