我有以下Web Api
public class ApiTestController : ApiController
{
// GET api/<controller>
[HttpGet]
public string UploadImage(int id)
{
return "You entered = " + id;
}
}
当运行时我输入/ api / ApiTest / 3它会命中它并返回你输入3
现在在我单独的MVC应用程序中,我试图通过执行以下操作来引用相同的api方法
private const string WebUrl = "http://localhost:1769/api/ApiTest/";
//
// GET: /Home/
public ActionResult Index()
{
try
{
var test = GetInvoiveNo(3);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
return View();
}
public string GetInvoiveNo(int id)
{
var uri = WebUrl + id;
using (var httpClient = new HttpClient())
{
Task response = httpClient.GetStringAsync(uri);
return JsonConvert.DeserializeObjectAsync<string>(response.ToString()).Result;
}
}
但我收到错误:
发生了一个或多个错误
所以我看看内部异常,这就是它所说的:
解析值时遇到意外的字符:S。路径&#39;&#39;,第0行,第0位。&#34;}
现在我不确定我在这里做错了什么,所以如果有人能够好好地告诉我或给我一个简单的例子,我会很感激。
答案 0 :(得分:0)
您的问题是您的回复格式不正确。
在下面的代码中,您尝试使用response.ToString()这是错误的,您必须使用用户的响应结果。
public string GetInvoiveNo(int id)
{
var uri = WebUrl + id;
using (var httpClient = new HttpClient())
{
var response = httpClient.GetStringAsync(uri);
return JsonConvert.DeserializeObjectAsync<string>(response.Result).Result;
}
}