代码大致如下:
//调用代码
using (var httpClient = new HttpClient() )
{
var Url = ConfigurationManager.AppSettings["smsManagerUrl"];
var task = httpClient.GetAsync(url);
var result=task.Result.Content.ReadAsStringAsync().Result;
}
//WebApI方法
public string EntUnRegister()
{
return "{\"name\":\"andy\",\"sex\":\"man\"}";
}
调用得到的实际结果是 "\"{\\\"name\\\":\\\"andy\\\",\\\"sex\\\":\\\"man\\\"}\""
不是Json字符串。
如果WebApi换成是普通的Asp.net mvc controller返回值是正常的Json字符串
不妨看看我这篇应用吧,HttpClient 的GET和POST简单操作,或许对你有点帮助
3Q
请问 WebApi 返回的字符串是什么内容呢?
"{\"name\":\"andy\",\"sex\":\"man\"}";
@jacky_liu: 那普通的Asp.net mvc controller返回的字符串是什么内容?
@Launcher: 都是一样的,只是在调用时获取到的值不一样,webApi的被转义了。
@jacky_liu: 你说法前后矛盾啊!如果被转义了,那么字符串内容就不一样了,你用 Fiddler 抓包,选择 HEX 查看,你就会发现它们返回的内容是不一样的。
这个不是很正常吗?
你搞错了一点:webapi返回的是一个对象.而不再是一个字符串
MVC返回是的一个字符串,所以可以直接返回一个json字符串
如果你在webapi输出一个json字符串,他会认为你要输出的是一个字符串对象,所以会进行转义
这都可以,如何避免它转义呀
@jacky_liu:你不能避免它转义,你只能按照它的规则来写代码。
public class user { public string name{get;set};public string sex{get;set}}
return new user {name="andy",sex="man"};
@jacky_liu: 看上面说的,就是对的了.你要用人家的东西就得先搞清楚人家的规则.
webapi还是很不错的.应该去学习的
@Launcher: have a try
@Launcher: 默认序列化结果不是我想要的,{"<name>k__BackingField":"andy","<sex>k__BackingField":"man"}。我用HttpResponseMessage作为返回值了
@jacky_liu: 不明白你想表达啥!看你的回答,好像全世界用 web api 的人都是错的,就你使用方式是对的。