3
如何使用命令行工具curl
发布到具有多个参数的WCF服务?如何使用卷曲到WCF服务的参数进行POST
我有一个像下面
[ServiceContract]
public interface IMyService
{
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped)]
void PostMethod(string varString, bool varBool);
}
我设置服务器这样
var service = new WebServiceHost(typeof(MyService),
new Uri("http://localhost:3000/MyService");
service.AddServiceEndpoint(typeof(IMyService), new WebHttpBinding(), "");
service.Open();
我怎么叫通过卷曲该方法的服务?
curl -d varString=foo -d varBool=true http://localhost:3000/MyService/PostMethod
错误在哪里?该方法的BodyStyle是否错误?我应该将参数包装在如下所示的[DataContract]类中吗?
[DataContract]
public class PostMethodResult
{
[DataMember]
public string varString { get; set; }
[DataMember]
public bool varBool { get; set; }
}
这不回应'卷曲-s -d varString = foo -d varBool = true http:// localhost:3000/MyService/PostMethod'。虽然它确实有效,但如果我这样做,而不是'curl -s -d doesnot =重要http:// localhost:3000/MyService/PostMethod?varString = foo&varBool = true'。如果不需要提供数据参数或将其用于数据而不是url,那就太好了。 – Jason 2012-04-18 18:48:02
嗯,我试过这个,它在这里工作(我从PowerShell运行卷曲)。让我看看为什么有差异。 – 2012-04-18 20:42:31
我正在使用没有默认端点的.net 4.0。虽然我认为这不会导致它为你工作而不是为我工作。你对内容类型做了些什么? – Jason 2012-04-18 21:36:42