webHttpBindingエンドポイントで公開されているWCFサービスがあります。理論的にwebHttpBindingを使用してWCFリクエストのボディにオブジェクトをシリアライズ
[OperationContract(IsOneWay = true)]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "/?action=DoSomething&v1={value1}&v2={value2}")]
void DoSomething(string value1, string value2, MySimpleObject value3);
、私はこれを呼び出した場合、最初の2つのパラメータ(値1 &値2)ウリから採取され、最終の一方(VALUE3)は、要求の本体からデシリアライズされるべきです。
私がRequestFormatとしてJsonを使用していると仮定して、送信する前にMySimpleObjectのインスタンスをリクエスト本体に直列化する最良の方法は何ですか?これは、例えば、動作するようには思えません。私は何が起こるかを心配するだろう
using (var response = sendRequest.GetResponse())
{
}
:私は違ったんだろう
HttpWebRequest sendRequest = (HttpWebRequest)WebRequest.Create(url);
sendRequest.ContentType = "application/json";
sendRequest.Method = "POST";
using (var sendRequestStream = sendRequest.GetRequestStream())
{
DataContractJsonSerializer jsonSerializer =
new DataContractJsonSerializer(typeof(MySimpleObject));
jsonSerializer.WriteObject(sendRequestStream, obj);
sendRequestStream.Close();
}
sendRequest.GetResponse().Close();
問題を混乱させるだけであるため、この質問からRESTへの参照を削除しました。 RESTfulなことをしていたら、この質問は無関係です。 –
提案:最後のパラメータをintにして試してみてください。 –
ジョン・サンダース:私はすでにそれをしました。これは、オブジェクトパラメータなしで、intで置き換えられたオブジェクトで正常に動作します。 –