次の webservice メソッドがあります。localhost でサービス リファレンス ページをテストすると正常に動作し、データを含む Xml ファイルが返されます。このメソッドは、2 つの配列の構造体を返します。C# クライアントを作成しようとしていますが、データの抽出に困難があります。これが私のコードです。
public struct GetWeatherItemDataStruct
{
//public DateTime[] TimeStamp;
public double[] Value;
public string[] TimeStamp;
}
[WebMethod]
public GetWeatherItemDataStruct GetWeatherItemData(string parameterName,string fromTime,string toTime)
{
GetWeatherItemDataStruct gwiDataStructObj = new GetWeatherItemDataStruct();
SqlConnection conn = null;
SqlDataReader rdr = null;
int prameterID = GetParameterID(parameterName);
int tblSize = GetTableSize(parameterName, fromTime, toTime, prameterID);
double[] result = new double[tblSize];
int i = 0;
string[] tStamp = new string[tblSize];
String source = "Data Source=MASTER-PC\\SQLEXPRESS;Initial Catalog=WeatherDatabase;Integrated Security=True";
try
{
using (conn = new SqlConnection(source))// create and open a connection object
{
// 1. create a command object identifying
// the stored procedure
SqlCommand cmd = new SqlCommand("GetWeatherItemData", conn);
// 2. set the command object so it knows
// to execute a stored procedure
cmd.CommandType = CommandType.StoredProcedure;
// 3. add parameter to command, which
// will be passed to the stored procedure
//cmd.Parameters.Add(new SqlParameter("@WeatherParameterID", "1"));
cmd.Parameters.Add("@WeatherParameter", SqlDbType.VarChar).Value = parameterName;
cmd.Parameters.Add("@FromTimeStamp", SqlDbType.VarChar).Value = fromTime;
cmd.Parameters.Add("@ToTimeStamp", SqlDbType.VarChar).Value = toTime;
conn.Open();
// execute the command
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
result[i] = (double)rdr["MeasurementValue"];
tStamp[i] = rdr["Recieved"].ToString();
i++;
}
gwiDataStructObj.Value = result;
gwiDataStructObj.TimeStamp = tStamp;
}
}
catch (SqlException e)
{
//Log exception
//Display Error message
}
return gwiDataStructObj;
}
このメソッドからどのように読み取るのですか?クライアントの作成方法がよくわかりません。これまでのところ、次のように書いています。
var client = new WebServiceSample.WebService1SoapClient();
string paramName = "Windsensor";
string dtFrom="2012-10-04 19:05:57:190";
string dtTo="2012-10-05 21:50:05:197";
int paramID = 0;
double[] paramValue;
double[] paramValue;
double[] tStamp;
double i;
paramValue = client.GetWeatherItemData(paramName, dtFrom, dtTo).Value;
tStamp =client.GetWeatherItemData(paramName, dtFrom, dtTo).TimeStamp;
私の問題は、次の2行です。
paramValue = client.GetWeatherItemData(paramName, dtFrom, dtTo).Value;
tStamp =client.GetWeatherItemData(paramName, dtFrom, dtTo).TimeStamp;
というエラーが表示されます: SoapWebServiceClient.WebServiceSample.ArrayOfDouble を double[] に暗黙的に変換できません
SoapWebServiceClient.WebServiceSample.ArrayOfString を string[] に暗黙的に変換することはできません