我想編寫一個ac#類,它將創建一個連接到運行到www.temp.com的web服務的連接,向方法DoSomething發送2個字符串參數並獲取字符串結果。 我不想使用wsdl。既然我知道web服務的參數,我只想做一個簡單的調用。如何從C#使用HTTP POST調用webservice
我想應該有一個容易和簡單的方法來做到這一點。NET中2,但我找不到任何例子...
我想編寫一個ac#類,它將創建一個連接到運行到www.temp.com的web服務的連接,向方法DoSomething發送2個字符串參數並獲取字符串結果。 我不想使用wsdl。既然我知道web服務的參數,我只想做一個簡單的調用。如何從C#使用HTTP POST調用webservice
我想應該有一個容易和簡單的方法來做到這一點。NET中2,但我找不到任何例子...
如果這個「Web服務」是一個簡單的HTTP GET,你可以使用WebRequest:
WebRequest request = WebRequest.Create("http://www.temp.com/?param1=x¶m2=y");
request.Method="GET";
WebResponse response = request.GetResponse();
從那裏,你可以看看response.GetResponseStream的輸出。您可以按照相同的方式打開POST服務。
但是,如果這是一個SOAP Web服務,它並不那麼容易。根據webservice的安全性和選項,有時您可以採用已經形成的請求並將其用作模板 - 替換param值併發送(使用webrequest),然後手動解析SOAP響應......但在這種情況下你正在尋找很多額外的工作,以及使用wsdl.exe
來生成代理。
我會探討使用ASP.NET MVC爲您的Web服務。您可以通過標準表單參數提供參數並將結果作爲JSON返回。
[HttpPost]
public ActionResult MyPostAction(string foo, string bar)
{
...
return Json(new { Value = "baz" });
}
在您的客戶端,使用HttpWebRequest
var request = WebRequest.Create("/controller/mypostaction");
request.Method = "POST";
var data = string.Format("foo={0}&bar={1}", foo, bar);
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.WriteLine(data);
}
var response = request.GetResponse();
var serializer = new DataContractJsonSerializer(typeof(PostActionResult));
var result = serializer.ReadObject(response.GetResponseStream())
as PostActionResult;
,你有其他
public class PostActionResult
{
public string Value { get; set; }
}
感謝您的信息,但我已經在沒有Json的情況下實現了它。下一次我會對此進行體驗。 – Stavros 2010-10-12 11:21:41
一種方法調用POST方法,我用來調用POST方法的WebAPI。
WebClient wc = new WebClient();
string result;
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
result = wc.UploadString("http://localhost:23369/MyController/PostMethodName/Param 1/Param 2","");
Response.Write(result);
您可以返回列表對象使用Newtonsoft.Json:
WebClient wc = new WebClient();
string result;
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
var data = string.Format("Value1={0}&Value2={1}&Value3={2}", "param1", "param2", "param3");
result = wc.UploadString("http:your_services", data);
var ser = new JavaScriptSerializer();
var people = ser.Deserialize<object_your[]>(result);
這是您的網絡服務?你可以使用JSON或純XML而不是SOAP來執行RESTful服務嗎? – tvanfosson 2010-10-10 12:59:19
@tvanfosson是的,這是我的web服務。我如何用JSON做一個REST風格的web服務? – Stavros 2010-10-10 13:20:20