使用C#编写调用WebService的客户端代码

优质
小牛编辑
133浏览
2023-12-01

在Visual Studio中使用WebService就简单得多。假设引用WebService时的引用名为complexType,则下面的代码调用了uploadImageWithByte方法来上传图像文件。在Visual Studio引用WebService时,uploadImageWithByte方法多了两个out参数,在使用时要注意。

complexType.ComplexTypeService cts = new WSC.complexType.ComplexTypeService();
System.IO.FileStream fs = new System.IO.FileStream(@"f:\images.jpg", System.IO.FileMode.Open);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, (int)fs.Length);
bool r;
bool rs;
cts.uploadImageWithByte( buffer, (int)fs.Length, true, out r, out rs);

在获得二维数组时,可以将数据加载到DataGridView或其他类似的控件中,代码如下:

String[] strArray = cts.getMDArray();
for (int i = 0; i < strArray.Length; i++){
  //  用正则表达式将带分隔符的字符串转换成String数组
  String[] columns = strArray[i].Split(',');
  //  如果DataGridView的表头不存在,向DataGridView控件添加三个带表头的列
  if (dataGridView1.Columns.Count == 0)
    for (int j = 0; j < columns.Length; j++)
      dataGridView1.Columns.Add("column" + (j + 1).ToString(), "列" + (j + 1).ToString());
  //  添加行
  dataGridView1.Rows.Add(1);
  for(int j = 0; j < columns.Length; j++){
    dataGridView1.Rows[i].Cells[j].Value = columns[j];             
  }        
}

向DataGridView控件添加数据后的效果如图1所示。

对于其他的WebService方法的调用都非常简单,读者可以自己做这个实验。

要注意的是,由于.net和java序列化和反序列化的差异,通过序列化的方式传递对象实例只使用于客户端与服务端为同一种语言或技术的情况,如客户端和服务端都使用Java来编写。

如果读者要上传大文件,应尽量使用FTP的方式来传递,而只通过WebService方法来传递文件名等信息。这样有助于提高传输效率。