Нет MediaTypeFormatter доступен для чтения объекта типа "String" из контента с типом мультимедиа "text/plain"

В этой ситуации:

Это внешний веб-сервис в Servoy, и я хочу использовать эту службу в приложении 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 доступен для чтения объекта типа 'String' от содержимого с типом мультимедиа 'text/plain'.

Если я открываю Fiddler и запускаю тот же URL-адрес, я вижу правильные данные, но тип содержимого - текстовый/обычный. Однако я вижу в Fiddler также JSON, которого я хочу...

Возможно ли решить эту проблему на стороне клиента или это веб-сервис Servoy?

Update:
Используется HttpWebRequest вместо HttpResponseMessage и читает ответ с помощью StreamReader...

Ответ 1

Вместо этого попробуйте использовать ReadAsStringAsync().

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

Причина, по которой он ReadAsAsync<string>() не работает, состоит в том, что ReadAsAsync<> будет пытаться использовать один из стандартных MediaTypeFormatter (т.е. JsonMediaTypeFormatter, XmlMediaTypeFormatter,...) для чтения содержимого с content-type of text/plain. Однако ни один из форматировщиков по умолчанию не может читать text/plain (они могут читать только application/json, application/xml и т.д.).

Используя ReadAsStringAsync(), содержимое будет считаться строкой, независимо от типа содержимого.