亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

WCF RESTでPOSTとかUPDATEするにはRequestHeaderを指定しないとダメ。

とりあえずメモの殴り書き。

WCF RESTサービスを作ってみました。
10 行でズバリ !! REST サービスの作成 (C#): Visual Studio 2008 対応版
これのしたで紹介されているテンプレートを使うと,コードが必要ないという衝撃。

それで,MSXMLを使ってアクセスしようとしたんですが,POSTがちゃんと呼んでくれない・・・

xmlHTTP = new ActiveXObject(AX_XMLHTTP);
xmlHTTP.abort();
xmlHTTP.open("POST", URL, false);
xmlHTTP.send(sendXML);

ちなみにWCFサービス側で呼び出されるメソッドの引数をDataContract指定したクラスではなくStream型にするとちゃんと読んでくれたりする。

なんでだー、と3時間悩み。

xmlHTTP = new ActiveXObject(AX_XMLHTTP);
xmlHTTP.abort();
xmlHTTP.open("POST", URL, false);
//追加---->
xmlHTTP.setRequestHeader('Content-Type', 'application/xml; charset=utf-8');
xmlHTTP.setRequestHeader('Content-Length', sendXML.length + '');
//<-----ここまで
xmlHTTP.send(sendXML);

ヘッダーの設定が必要なんですね。。。