2012-08-10 56 views
3

如何從C#類中調用POST類型的WCF方法?用C調用Restful WCF POST方法#

WCF方法

[OperationContract] 
[WebInvoke(Method = "POST", 
      UriTemplate = "/process", 
      RequestFormat = WebMessageFormat.Json, 
      ResponseFormat = WebMessageFormat.Json, 
      BodyStyle = WebMessageBodyStyle.Wrapped)] 
MyRespons Process(MyRequest req); 

我怎樣才能把這種從一個aspx代碼隱藏?

我試着用webclient接收流,它可以和任何get方法一起使用,但不能和POST一起使用。該方法適用於Fiddler和海報:

string getDeclarations = string.Format("{0}/process", ServiceBaseAddress); 
var proxy = new WebClient(); 
proxy.DownloadStringCompleted += ProxyDownloadDeclarationsCompleted; 
proxy.DownloadStringAsync((new Uri(getDeclarations))); 
+0

@ DanielA.White - 我編輯了這篇文章。 – 2012-08-10 12:57:34

回答

1

您可以使用jQuery來做到這一點。這裏還有一個great example供您使用。

這是一個示例代碼塊。

$.ajax({ 
    cache: false, 
    type: "POST", 
    async: false, 
    url: /* YOUR URL */, 
    data: JSON.stringify(/* YOUR POST DATA */), 
    contentType: "application/json", 
    dataType: "json", 
    success: function (response) { 
     /* SUCCESS FUNCTION */ 
    }, 
    error: function (error) { 
     /* ERROR FUNCTION */ 
    } 
}); 

已編輯

這裏是一個reference使用WebClient執行POST一個#1的例子。

+0

感謝邁克,是否有一種方式在C#中相同,aspx代碼隱藏? – Gino 2012-08-10 12:40:53

+1

@Gino:但你確實要求一種在.aspx中做的方式,而不是在.cs中。嘗試更具體的問題,而不是在評論;-) – Thomas 2012-08-10 12:46:55

+0

@Thomas - 我開始我的問題:我怎樣才能調用類型POST從C#類的WCF方法?但我用aspx頁面結束了它。現在是正確的。謝謝 – Gino 2012-08-10 13:13:18

2

您是否嘗試在要使用WCF服務的項目中向您的WCF服務添加服務引用?
爲此,請在解決方案資源管理器中右鍵單擊您的項目,然後選擇添加服務參考。然後輸入您的URL到您的WCF服務,並且您可以在您使用對象和方法引用任何其他DLL或項目時使用它。

+0

是的Tim,這將解決問題:)。但是可以通過調用鏈接從後面的C#代碼中調用POST方法嗎? – Gino 2012-08-10 12:50:07

+0

看看HttpRequest並將HttpMethod設置爲'Post'。 – Thomas 2012-08-10 12:52:57

+0

@Gino - 我不確定你是否完全理解這項技術,所以讓我試試看。 Tim已經成功地回答了你的問題。添加服務參考,然後在鏈接的「Click」事件中調用該服務以獲得響應。你不**調用鏈接**,這是否有道理? – 2012-08-10 12:53:41