首页 新闻 会员 周边 捐助

Asp.net MVC HttpClient调用WebApI获取响应值

0
悬赏园豆:10 [已解决问题] 解决于 2015-07-31 17:01

代码大致如下:

//调用代码

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字符串

jacky_liu的主页 jacky_liu | 初学一级 | 园豆:169
提问于:2015-07-31 15:13
< >
分享
最佳答案
0

不妨看看我这篇应用吧,HttpClient 的GET和POST简单操作,或许对你有点帮助

http://www.cnblogs.com/visonme/p/4692427.html

收获园豆:8
visonme | 小虾三级 |园豆:1674 | 2015-07-31 16:04

3Q

jacky_liu | 园豆:169 (初学一级) | 2015-07-31 16:14
其他回答(2)
0

请问 WebApi 返回的字符串是什么内容呢?

收获园豆:1
Launcher | 园豆:45050 (高人七级) | 2015-07-31 15:41

"{\"name\":\"andy\",\"sex\":\"man\"}"; 

支持(0) 反对(0) jacky_liu | 园豆:169 (初学一级) | 2015-07-31 15:47

@jacky_liu: 那普通的Asp.net mvc controller返回的字符串是什么内容?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-31 15:56

@Launcher: 都是一样的,只是在调用时获取到的值不一样,webApi的被转义了。

支持(0) 反对(0) jacky_liu | 园豆:169 (初学一级) | 2015-07-31 16:14

@jacky_liu: 你说法前后矛盾啊!如果被转义了,那么字符串内容就不一样了,你用 Fiddler 抓包,选择 HEX 查看,你就会发现它们返回的内容是不一样的。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-31 16:16
0

这个不是很正常吗?

你搞错了一点:webapi返回的是一个对象.而不再是一个字符串

MVC返回是的一个字符串,所以可以直接返回一个json字符串

如果你在webapi输出一个json字符串,他会认为你要输出的是一个字符串对象,所以会进行转义

收获园豆:1
吴瑞祥 | 园豆:29449 (高人七级) | 2015-07-31 15:57

这都可以,如何避免它转义呀

支持(0) 反对(0) jacky_liu | 园豆:169 (初学一级) | 2015-07-31 16:13

@jacky_liu:你不能避免它转义,你只能按照它的规则来写代码。

 public class user { public string name{get;set};public string sex{get;set}}

return new user {name="andy",sex="man"};

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-31 16:18

@jacky_liu: 看上面说的,就是对的了.你要用人家的东西就得先搞清楚人家的规则.

webapi还是很不错的.应该去学习的

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2015-07-31 16:28

@Launcher: have a try 

支持(0) 反对(0) jacky_liu | 园豆:169 (初学一级) | 2015-07-31 16:48

@Launcher: 默认序列化结果不是我想要的,{"<name>k__BackingField":"andy","<sex>k__BackingField":"man"}。我用HttpResponseMessage作为返回值了

支持(0) 反对(0) jacky_liu | 园豆:169 (初学一级) | 2015-07-31 17:00

@jacky_liu: 不明白你想表达啥!看你的回答,好像全世界用 web api 的人都是错的,就你使用方式是对的。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-31 17:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册