使用来自WCF服务的POST来消费Web服务

本文关键字:服务 Web POST WCF | 更新日期: 2023-09-27 18:03:36

这就是我的情况。我必须从另一个wcf服务中消费第三方web服务(不是wcf),该服务将作为第一个服务和我的web应用程序之间的中介。问题是我所看到的几乎每个例子都需要您添加web/服务引用到应用程序以生成代理,但我不能添加引用,它返回一个错误,可能是由于需要一些身份验证。

此服务只能被GET或POST使用。我成功地通过GET和POST从一个ajax调用jquery在一个网页中消费服务,但我不知道如何从c#中的wcf服务内部消费服务。

来自服务的GET请求示例如下:

http://webservice.server.com/services/myservice?user=【用户名】,密码=(密码),value1 = [somevalue], value2 = [anothervalue]

响应是一个xml,包含操作的状态码和状态消息,然后我将其保存到数据库中。

我该怎么做呢?

谢谢你的帮助…

<<p> 解决方案/strong>

感谢Sean为我指出了正确的方向。我是怎么做到的:

参考文章:如何使用HttpWebRequest发送POST请求到另一个web服务器
ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "username=" + username;
postData += ("&password=" + password);
postData += ("&value1=" + val1);
postData += ("&value2=" + val2);
byte[] data = encoding.GetBytes(postData);
// Prepare POST web request...
HttpWebRequest myRequest =
  (HttpWebRequest)WebRequest.Create(new Uri("http://webservice.server.com/services/myservice"));
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
// Send the data.
newStream.Write(data, 0, data.Length);
newStream.Close();
// Get response  
using (HttpWebResponse response = myRequest.GetResponse() as HttpWebResponse)
{
    // Get the response stream  
    StreamReader reader = new StreamReader(response.GetResponseStream());
    // Read the whole contents and return as a string  
    result = reader.ReadToEnd();
}
XDocument doc = XDocument.Parse(result);
// Read XML

如果您对我的解决方案有任何意见,反对意见或改进,欢迎发表意见。

使用来自WCF服务的POST来消费Web服务

我想你会想看看HttpRequest类:

http://msdn.microsoft.com/en-us/library/system.web.httprequest.aspx

如果你不能添加web服务引用(我会进一步调查为什么你不能先这样做),恐怕你必须手动使用WebClient类WebClient或httpprequest类发出一个HTTP请求,如Sean所建议的