12.7 CSV を生成しファイルシステムへ保存するサンプル(WCF)
概要
CSV を生成しファイルシステムへ保存するサンプルです。
サンプル構成
項目 | ファイルパス |
---|---|
ページレイアウトサンプル |
<bswss-client_home>/sample/xml/Sample6.xml
![]() |
ソースサンプル |
<bswss-client_home>/sample/dotNET/wcf/WSS_WCF_Sample7.aspx.cs
![]() |
ソースサンプル
using System; using System.IO; using System.ServiceModel; using System.ServiceModel.Channels; using System.Web; using BizStreamWebApplication.BizStreamServiceReference; namespace BizStreamWebApplication { public partial class WSS_WCF_Sample7 : System.Web.UI.Page { // Webサービスサーバのホスト名 const string WSS_HOST_NAME = "wsssrv"; // Webサービスサーバ上のサンプルディレクトリの場所 const string WSS_BIZSTREAM_SAMPLE_DIR = "\\bs\\sample"; // Webサービスのエンドポイントプリフィックス const string WSS_SERVICE_LOCATION = "http://" + WSS_HOST_NAME + ":8080/axis2/services"; // BASIC認証のユーザ名 const string USER_NAME = @"bizuser1"; // BASIC認証のパスワード const string PASSWORD = @"bizuser1"; // 監査ロギング用のユーザ定義 const string USER_DEF = "AAA"; // 入力レイアウト定義ファイル名 const string LAYOUT_FILE = WSS_BIZSTREAM_SAMPLE_DIR + "\\xml\\Sample6.xml"; // 出力先ファイルパス const string OUTPUT_FILE = @"C:\\Temp\\WSS_WCF_Sample7.csv"; protected void Page_Load(object sender, EventArgs e) { // データの生成 byte[] data = generate(); // バイト配列をファイルにすべて書き込む File.WriteAllBytes(OUTPUT_FILE, data); // ブラウザに結果を表示 Response.Clear(); Response.ContentType = "text/html;charset=UTF-8"; Response.Write("<HTML><HEAD><TITLE>WSS_WCF_Sample7</TITLE></HEAD><BODY>"); Response.Write("正常終了しました。<BR>"); Response.Write("ファイルパス:" + OUTPUT_FILE); Response.Write("</BODY></HTML>"); Response.Flush(); HttpContext.Current.ApplicationInstance.CompleteRequest(); } private byte[] generate() { // クライアントを生成 bizstreamPortTypeClient client = new bizstreamPortTypeClient("BizstreamSOAP11port", WSS_SERVICE_LOCATION + "/bizstream?UserDef=" + USER_DEF); // 認証の設定 BindingElementCollection elements = client.Endpoint.Binding.CreateBindingElements(); elements.Find<HttpTransportBindingElement>().AuthenticationScheme = System.Net.AuthenticationSchemes.Basic; client.ClientCredentials.UserName.UserName = USER_NAME; client.ClientCredentials.UserName.Password = PASSWORD; // MTOMを有効化 elements.Remove<TextMessageEncodingBindingElement>(); MtomMessageEncodingBindingElement mtom = new MtomMessageEncodingBindingElement(); mtom.ReaderQuotas.MaxStringContentLength = 100000; elements.Insert(0, mtom); elements.Find<HttpTransportBindingElement>().KeepAliveEnabled = false; client.Endpoint.Binding = new CustomBinding(elements); // リクエストメッセージの作成 generateDataRequest request = new generateDataRequest(); // 出力ファイルの種類を設定 request.dataType = new dataType(); request.dataType.Item = new csv(); // レイアウト定義を設定 request.layoutData = new layoutDefinition[1]; request.layoutData[0] = new layoutDefinition(); request.layoutData[0].uri = LAYOUT_FILE; // リクエストを送信 fileData data = client.generateData(request); /* * CSV出力はFileData#getContentDataGroup()よりBase64Binaryの配列を取得する * (CSVの1行が1配列要素となっている) * また、出力エンコーディングはUTF-8となるので注意 */ // データサイズの計算 base64Binary[] list = data.contentDataGroup.contentData; int size = 0; for (int i = 0; i < list.Length; i++) { base64Binary base64 = list[i]; byte[] lineData = base64.Value; size += lineData.Length; } // CSVデータの連結 MemoryStream stream = new MemoryStream(); using (BinaryWriter writer = new BinaryWriter(stream)) { for (int i = 0; i < list.Length; i++) { base64Binary base64 = list[i]; byte[] lineData = base64.Value; writer.Write(lineData); } } return stream.ToArray(); } } }