REST WCFサービスで.Netメソッドをテストする必要があります。これには、DataTableを渡す必要があり、DataTableも返す必要があります。
DataTable TryPostDataTable(DataTable dataTable);
私のJavaテストコードでは、HtttClientを使用してこのサービスにPostリクエストを送信しました。ヘッダーがあります:
"Content-Type", "text/xml; charset=utf-8"
と体:
<TryPostDataTable xmlns="http://tempuri.org/">
<dataTable>
<Person>
<name>A Name</name>
<age>An Age</age>
</Person>
</dataTable>
</TryPostDataTable>
ただし、サービスがリクエストを受信すると、dataTable変数は常に空のDataTableインスタンスになり、行と列はありません
dataTableのタイプをStringに変更し、Post本文を次のように変更した場合:
<TryPostDataTable xmlns="http://tempuri.org/">
<datatable>
TestString
</datatable>
</TryPostDataTable>
次に、リクエストを適切に解析します。
HttpPostを介してDataTableオブジェクトを渡す方法がわかりません。RestサービスでのXMLからDataTableへの解析プロセスの何が問題になっていますか?または私の投稿が正しくありませんか?
どんな助けでも本当にありがたいです。
//編集1:
このコードを使用してxmlコンテンツを生成しようとしました:
DataTable dtEmployee = new DataTable("Person");
dtEmployee.Columns.Add("Name", typeof(string));
dtEmployee.Columns.Add("Age", typeof(string));
dtEmployee.Rows.Add("A Name", "An Age");
dtEmployee.WriteXml(@"C:\Working\Employee.xml", XmlWriteMode.WriteSchema);
生成されます:
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Person" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Person">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" minOccurs="0" />
<xs:element name="Age" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<Person>
<Name>A Name</Name>
<Age>An Age</Age>
</Person>
次に、httpPostを使用してこのxmlをTryPostDataTableメソッドに送信します。
これで、サービスはスキーマを正常に解析し、変数dataTableに割り当てられた2つの列「Name」-「Age」を持つ「Person」テーブルを生成します。しかし、行はありません-内部にデータはありません。