如果从Console Application调用服务,则序列化不适用于Web API

时间:2016-07-07 06:33:11

标签: c# json xml asp.net-web-api asp.net-web-api2

这是我的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;}

0 个答案:

没有答案