Я очень плохо знаком с RESTFull WCF Services и еще новее обращаюсь к ним из приложения Android. Вот мой сервис WCF:
[ServiceContract]
public interface IPeople
{
[OperationContract]
void DoWork();
[WebGet(UriTemplate = "/GetPeople",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json)]
[OperationContract]
string GetPeople();
}
Реализация интерфейса:
публичная строка GetPeople ()
{
PeoplesEntities qe = new PeoplesEntities ();
var result = from q in qe.tPeople
select q;
int count = result.Count();
int index = new Random().Next(count);
tPeople people = result.OrderBy(a=>a.ID).Skip(index).FirstOrDefault();
// result.First().ToString();
return people.FirstName + " - " + people.LastName;
}
и вот как я потребляю его через службу Android:
try {
HttpGet request = new HttpGet(SERVICE_URI + "/GetPeople");
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);
HttpEntity responseEntity = response.getEntity();
// Read response data into buffer
char[] buffer = new char[(int)responseEntity.getContentLength()];
InputStream stream = responseEntity.getContent();
InputStreamReader reader = new InputStreamReader(stream);
reader.read(buffer);
stream.close();
JSONArray plates = new JSONArray(new String(buffer));
return new String(buffer);
} catch (Exception e) {
e.printStackTrace();
return e.toString();
}
}
Исключение, которое я получаю, - это то, что упоминается в теме. Что странно, так это значение, которое я ожидаю, возвращается в исключении. Я понятия не имею, почему он ожидает квадратную скобку.
К вашему сведению, большая часть кода, который я использовал, взята непосредственно из онлайн-примеров. Любая помощь будет принята с благодарностью. Благодарю.