текст jsonarray должен начинаться с '[' с символа 1 из {моего возвращаемого значения} - PullRequest
0 голосов
/ 30 января 2011

Я очень плохо знаком с 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();
   }
}

Исключение, которое я получаю, - это то, что упоминается в теме. Что странно, так это значение, которое я ожидаю, возвращается в исключении. Я понятия не имею, почему он ожидает квадратную скобку.

К вашему сведению, большая часть кода, который я использовал, взята непосредственно из онлайн-примеров. Любая помощь будет принята с благодарностью. Благодарю.

1 Ответ

2 голосов
/ 30 января 2011

Вы пытаетесь создать JSONArray из строки, которая не содержит допустимый синтаксис массива JSON. JSONArray может быть создан из строки вида [item1, item2, item3....], но вы просто возвращаете один элемент в вашей строке: FirstName LastName.

Строка после него просто возвращает буфер, поэтому вызов JSONArray в любом случае бессмыслен. Вам вообще не нужен вызов JSONArray, поскольку вы не имеете дело с данными JSON. Просто удали эту строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...