2013-08-20 2 views
3

클라이언트에 Json 메시지를 반환하는 C# restserviceA에 methodA를 구현하려고합니다.Json 응답을 반환하는 방법

방법은 간단하게이 방법은 RestServiceB에서 JSON 형식의 응답을받을 것입니다

HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest; 
req.Method = "GET"; 
resp = req.GetResponse() as HttpWebResponse; 
resp = req.GetResponse() as HttpWebResponse; 
      Encoding enc = Encoding.UTF8; 
      loResponseStream = new StreamReader(resp.GetResponseStream(), enc); 
      string strResponse = loResponseStream.ReadToEnd(); 
      return resp; 

아래처럼 내부적으로 호스팅 서비스, 말 ResterviceB 또 다른 restservice를 호출합니다. 어떻게 json 형식으로 클라이언트에 동일한 json 문자열을 반환 할 수 있습니까?

아래와 같이 webMethod 특성을 내 methodA에 넣으려고했지만 RestServiceA의 MethodA에서 응답을받는 것은 항상 문자열 형식입니다.

SVC 인터페이스 :

[OperationContract ] 
[WebGet(UriTemplate = "getresults", ResponseFormat = WebMessageFormat.Json)] 
String GetResults(); 

SVC 코드 여기

public String GetResults() 
{ 
    string str=//Call RestServiceB which returns response as below. 
    "query":"myquery", "results": [ {"name":"result1", "type":"suggest"}, {"name":"result2", "type":"type2"}]" 
    return str; 
} 

어떤 제안? 고맙습니다.

+0

웹 메서드 서명을 볼 수 있도록 코드를 확장 할 수 있습니까? JSON은이 서비스에서 오는 문자열 일 뿐이며 JSON을 문자열로 반환 할 수 있어야한다고 생각합니다. –

+0

감사 Brainwipe. 질문에 더 많은 코드를 추가했습니다. 추가 질문이 있으면 알려주십시오. – Krishnakumar

답변

0

JSON 문자열이 다른 JSON 문자열로 래핑됩니다.

원시 JSON 문자열을 반환하는 한 가지 방법은 문자열 대신 GetResults()의 출력 유형을 스트림으로 변경하는 것입니다.

public System.IO.Stream GetResults() 
    { 
     string str=//Call RestServiceB which returns response as below. 
     "query":"myquery", "results": [ {"name":"result1", "type":"suggest"}, {"name":"result2", "type":"type2"}]"   
     WebOperationContext.Current.OutgoingResponse.ContentType = 
     "application/json; charset=utf-8"; 
     return new MemoryStream(Encoding.UTF8.GetBytes(str)); 
    } 

    [OperationContract ] 
    [WebGet(UriTemplate = "getresults")] 
    String GetResults(); 
관련 문제