我正在尝试从我的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服务将其作为字节数组?
答案 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);