一尘不染

没有MediaTypeFormatter可用于从媒体类型为“文本/纯文本”的内容中读取“字符串”类型的对象

json

这种情况:

他们是Servoy中的外部Web 服务,我想在ASP.NET MVC应用程序中使用此服务。

使用此代码,我尝试从服务中获取数据:

HttpResponseMessage resp = client.GetAsync("http://localhost:8080/servoy-service/iTechWebService/axws/shop/_authenticate/mp/112818142456/82cf1988197027955a679467c309274c4b").Result;
resp.EnsureSuccessStatusCode();

var foo = resp.Content.ReadAsAsync<string>().Result;

但是当我运行该应用程序时,出现下一个错误:

没有MediaTypeFormatter可用于从媒体类型为“文本/纯文本”的内容中读取“字符串”类型的对象。

如果我打开Fiddler并运行相同的URL,则可以看到正确的数据,但是content-type是text /
plain。但是我在Fiddler中也看到了我想要的JSON …

可以在客户端解决此问题还是Servoy网络服务?

更新:
使用HttpWebRequest而不是HttpResponseMessage并使用StreamReader读取响应…


阅读 390

收藏
2020-07-27

共1个答案

一尘不染

尝试改用ReadAsStringAsync()。

 var foo = resp.Content.ReadAsStringAsync().Result;

为什么它的原因ReadAsAsync<string>()不工作是因为ReadAsAsync<>将尝试使用默认的一个MediaTypeFormatter(即JsonMediaTypeFormatterXmlMediaTypeFormatter…)读取与内容content- typetext/plain。然而,没有默认格式化可以读取text/plain(他们只能读application/jsonapplication/xml等等)。

通过使用ReadAsStringAsync(),无论内容类型如何,内容都将被读取为字符串。

2020-07-27