将Byte数组从Blackberry传递到.NET Webservice

时间:2009-05-29 12:35:28

标签: web-services blackberry asmx java-wireless-toolkit jsr172

我正在尝试从我的Blackberry应用程序向.NET Web服务(asmx)发送一个字节数组。

我正在使用Sun Java Wireless Toolkit(WTK)2.5.2来生成要在Blackberry解决方案中使用的Web服务存根。 WTK项目设置使用JSR 172规范生成存根。

我使用.NET 2005创建了Webservice,使用以下方法:

[WebMethod]
public string UploadImage(byte[] Data, string Name)
{
  //do stuff
}

我从这个webservice的WSDL生成存根,但我收到:“错误:找到未知的简单类型:byte []”。我已经使用了这种生成存根的方法,之前我没有收到任何错误,授予所有输入变量都是简单类型,但我用它来返回自定义对象的数组。当我检查WSDL文件时,类型是base64Binary。

我可以使用除字节数组以外的其他内容来传递数据吗?或者是否存在某些我缺少的设置以允许Web服务将其作为字节数组?

2 个答案:

答案 0 :(得分:4)

最好的办法可能就是将参数指定为String。 Base64是二进制数据的ASCII表示。

答案 1 :(得分:3)

你用String而不是byte []来声明你的方法。 您可以在客户端使用以下代码段:

byte[] chunk = ...;
String data= Base64OutputStream.encodeAsString(chunk, 0, chunk.length, false, false);
UploadImage(data, name)

and on the server side you can use:

byte[] byteArray;
byteArray = Base64.decode(data);