コマンドラインツールcurl
を使用して、2つ以上のパラメータを持つWCFサービスに投稿するにはどうすればよいですか?WCFサービスにcurlを使用してパラメータを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 = matter http:// localhost:3000/MyService/PostMethod?varString = foo&varBool = true'を実行すると動作します。データのパラメータを指定したり、URLの代わりにデータに使用したりする必要はありません。 – Jason
うーん、私はこれを試して、ここで働いた(私はパワーシェルからカールを実行した)。どうして違いがあるのか見てみましょう。 –
私はデフォルトのエンドポイントなしで.net 4.0を使用しています。私はそれがあなたのために、そして私にとってはうまくいかないと思っていますが。コンテンツタイプに何かしましたか? – Jason