2013-08-20 171 views
3

我想在我的C#restserviceA中實現一個方法A,它向客戶端返回一個Json消息。如何返回一個JSON響應

的方法只是使另一個restservice調用內部託管服務,說ResterviceB像下面

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; 

這種方法會得到來自RestServiceB JSON格式的響應。我怎樣才能將json字符串以json格式返回給客戶端。

我試着把webmethod屬性如下所示放到我的methodA中,但是我從ResActionA從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

您可以擴展您的代碼,以便我們可以看到Web方法簽名嗎? JSON只是一個字符串脫離這個服務,我相信你應該能夠返回JSON作爲一個字符串。 –

+0

感謝Brainwipe。我爲這個問題增加了一些代碼。如果您還有其他問題,請告訴我。 – Krishnakumar

回答

0

您的JSON字符串正在被包裝在另一個JSON字符串中。

返回原始JSON字符串的一種方法是將GetResults()的輸出類型更改爲Stream而不是字符串。

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