当前位置: 首页 > 面试题库 >

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

惠志
2023-03-14
问题内容

这种情况:

他们是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读取响应…


问题答案:

尝试改用ReadAsStringAsync()。

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

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

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



 类似资料:
  • 我预计服务器上会出现此请求的错误,然后将其作为字符串与预期响应进行比较。 问题是,在执行此命令时,RestAsure会给我一个错误:java.lang.IllegalStateExcture:无法解析对象,因为响应中没有指定支持的Content-Type。Content-Type为text/html; charset=ISO-8859-1。 我已经在设置中添加了解码器,但没有帮助。 错误情况下服务

  • PS Vita可使用以下的卡片媒体。 存储卡 PS Vita专用存储卡。 要保存从PlayStation®Store下载的游戏、游戏的保存数据、照片或音乐时,需使用此卡。 无法使用Memory Stick Micro™(M2™)等Memory Stick™媒体。 请在电源关闭的状态下插拔存储卡。若在电源启动的状态下插拔存储卡,可能会导致数据损毁。 将存储卡直接插入已注册PlayStation®Ne

  • 当我将接口的任何属性设置为可选时,我会在将其成员分配给其他变量时遇到如下错误: 我如何绕过这个错误?

  • 问题内容: 我有一个名字叫类的名字(没有扩展名)。我想将其分配给变量,如下所示: 我怎样才能做到这一点? 问题答案: 但是您应该是完全合格的-即

  • 问题内容: 我有一个很大的文本文件,但是没有换行符。它只包含一个很长的字符串(包含所有ASCII字符的1行巨大的字符串),但是到目前为止一切正常,因为我可以将整行读入Java的内存中,但是我想知道是否有内存由于文件变得如此之大(如5GB +),并且程序无法一次将整个文件读入内存,因此出现泄漏问题,那么在那种情况下,读取此类文件的最佳方法是什么?我们可以将巨大的线条分成2个部分,甚至多个块吗? 这是