2011-04-12 70 views
0

我正在通過WCF上的HTTP post服務向客戶端返回一個字符串值。通過C#WCF服務返回輸出值

我可以返回一個狀態碼好通過以下:

WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.OK;

...但是我不完全確定如何將字符串值返回給客戶端。

任何指針將不勝感激。

感謝

尼克

namespace TextWCF 
{ 
[ServiceContract] 
public interface IShortMessageService 
{ 
    [WebInvoke(UriTemplate = "invoke", Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
    [OperationContract] 
    void PostSMS(Stream input); 

} 
} 

[OperationBehavior] 
    public void PostSMS(Stream input) 
    { 

     StreamReader sr = new StreamReader(input); 
     string s = sr.ReadToEnd(); 
     sr.Dispose(); 
     NameValueCollection qs = HttpUtility.ParseQueryString(s); 

     string user = Convert.ToString(qs["user"]); 
     string password = qs["password"]; 
     string api_id = qs["api_id"]; 
     string to = qs["to"]; 
     string text = qs["text"]; 
     string from = qs["from"]; 

     WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.OK; 
     WebOperationContext.Current.OutgoingResponse. = HttpStatusCode.OK; 
    } 
+2

你的方法設置了'void's。您可以更改您方法的聲明,例如'公共字符串PostSMS(流輸入)'如果你想返回一個'字符串'。 – 2011-04-12 14:00:01

回答

2

你需要讓你的方法實際上返回的東西尼爾指出。

所以只要改變你的方法簽名看起來像

namespace TextWCF 
{ 
[ServiceContract] 
public interface IShortMessageService 
{ 
    [WebInvoke(UriTemplate = "invoke", Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
    [OperationContract] 
    string PostSMS(Stream input); 

} 
} 

[OperationBehavior] 
    public string PostSMS(Stream input) 
    { 

     StreamReader sr = new StreamReader(input); 
     string s = sr.ReadToEnd(); 
     sr.Dispose(); 
     NameValueCollection qs = HttpUtility.ParseQueryString(s); 

     string user = Convert.ToString(qs["user"]); 
     string password = qs["password"]; 
     string api_id = qs["api_id"]; 
     string to = qs["to"]; 
     string text = qs["text"]; 
     string from = qs["from"]; 

     WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.OK; 
     WebOperationContext.Current.OutgoingResponse. = HttpStatusCode.OK; 

     return "Some String"; 
    } 
+0

感謝您的迴應。我試圖通過HTTP發送一個空白頁面,其中包含的字符串。這是否適用於此目的?謝謝 – Nick 2011-04-12 14:40:13