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

时间:2011-07-27 14:33:38

标签: c# wcf web-services http-post

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

此服务只能由GET或POST使用。我通过网页中的jquery从ajax调用中通过GET和POST来成功使用服务,但我不知道如何在c#中使用wcf服务中的服务。

来自该服务的示例GET请求是:

http://webservice.server.com/services/myservice?user= [用户名]&安培;密码= [口令]&安培;值1 = [someValue中]&安培;值2 = [anothervalue]

响应是一个带有操作状态代码和状态消息的xml,然后我将继续保存到数据库。

我该怎么做呢?

感谢您的帮助......

感谢肖恩指出我正确的方向。我是怎么做到的:

参考文章:How to use HttpWebRequest to send POST request to another web server

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

如果您对我的解决方案,异议或改进有任何意见,欢迎提出所有意见。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

如果您无法添加Web服务引用(我会进一步调查为什么您不能首先执行此操作),我担心您必须使用WebClient类手动发出HTTP请求{{3或肖恩建议的HttpReqest类