没有MediaTypeFormatter可用于从媒体types为“text / plain”的内容读取“String”types的对象,
这是情况:
他们是在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可用于从媒体types为“text / plain”的内容读取“String”types的对象。
如果我打开Fiddler并运行相同的URL,我看到正确的数据,但内容types是文本/纯文本。 然而,我看到在提琴手也JSON我想…
有没有可能在客户端解决这个问题呢,还是Servoy的web服务?
更新:
使用HttpWebRequest而不是HttpResponseMessage并使用StreamReader读取响应…
尝试使用ReadAsStringAsync()来代替。
var foo = resp.Content.ReadAsStringAsync().Result;
ReadAsAsync<string>()
不起作用的原因是因为ReadAsAsync<>
会尝试使用默认的MediaTypeFormatter
(即JsonMediaTypeFormatter
, XmlMediaTypeFormatter
,…)来读取content-type
为text/plain
。 但是,默认格式化程序都不能读取text/plain
(它们只能读取application/json
, application/xml
等)。
通过使用ReadAsStringAsync()
,无论内容types如何,内容都将以stringforms读取。