2011-01-29 3 views
0

저는 RESTFull WCF Services에 매우 익숙하며, Android 앱에서 호출하는 것이 더 새롭습니다.jsonarray 텍스트는 {my returns value}의 문자 1에서 '['로 시작해야합니다.

[ServiceContract] 
    public interface IPeople 
    { 
     [OperationContract] 
     void DoWork(); 

     [WebGet(UriTemplate = "/GetPeople", 
      BodyStyle = WebMessageBodyStyle.WrappedRequest, 
      ResponseFormat = WebMessageFormat.Json, 
      RequestFormat = WebMessageFormat.Json)] 
     [OperationContract] 
     string GetPeople(); 
    } 

인터페이스의 구현 : 여기 내 WCF 서비스의

공공 문자열 GetPeople() { PeoplesEntities QE = 새로운 PeoplesEntities을();

시도 {

 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(); 
    } 
} 

내가 얻을 예외는 주제에서 언급 무엇을 :

   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; 
    } 

는이 내가 안드로이드 서비스를 통해 소비하고있어 방법이다. 이상한 점은 예외에서 반환 될 것으로 예상되는 값입니다. 나는 그것이 왜 대괄호를 기대하고 있는지 전혀 모른다.

참고로, 대부분의 코드는 온라인 예제에서 직접 가져 왔습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사.

+0

JSON 및 http 인증으로 인해 안드로이드에서 두통이 생겼습니다. 그러나 보존하고 당신은 그것을 통해 얻을 것이다. JSOn 구조체에 대해 잘 모르겠다면 JSON 구조체를 작성하는 방법을 배우고 C# 코드가 무엇인지 알 수 있도록 조언하십시오. – JonWillis

답변

2

유효한 JSON 배열 구문이없는 문자열에서 JSONArray를 만들려고합니다. JSONArray는 [item1, item2, item3....] 형식의 문자열로 만들 수 있지만 문자열의 단일 항목 인 FirstName LastName을 반환하는 것입니다.

그냥 버퍼를 반환하기 때문에 JSONArray 호출은 무의미합니다. JSON 데이터를 다루지 않기 때문에 JSONArray 호출이 전혀 필요하지 않습니다. 그냥 그 줄을 제거하십시오.