2010-11-09 70 views
0

我需要将一个二进制数据块传递给Web服务。我传递的对象是API的一部分,因此Serialize/Deserialize/Byte函数内置于API类中。据我所知,它不是显式的XML序列化。VB.net将二进制对象发送到Web服务时出错

不幸的是,无论何时将数据传递到我的Web服务,即使作为编码字符串,该服务都会返回“(400)错误请求”错误。如果我删除的编码数据,并用简单的字符串替换变量,适当的响应返回,排除了认证,服务错误等

'Convert the byte array into an encoded string' 
Dim unicodeEncoder As New UnicodeEncoding() 
Dim serializedData As String = unicodeEncoder.GetString(myObject.Bytes).Trim() 
Dim webAuth As New myWebService.ServiceSoapClient 
MessageBox.Show(webAuth.VerifyFeatureSet(serializedData , "", "", "", "")) 

对我怎么能做到这一点有什么建议?如果我需要以不同的方式对数据进行编码,请在远端对其进行解码。

+0

您是否尝试过使用64Base转换? – 2010-11-09 09:42:46

+0

我可以在Base64中发送数据,但是当我将其取出时,我收到以下消息:从字符串“”转换为键入“Double”无效。使用此代码:Dim bt As Byte()= System.Convert.FromBase64String(Trim(base64DataString)) – Brad 2010-11-09 15:18:29

+0

下班回家,现在运行。也许我在做了其他更改后忘记了构建。谢谢您的帮助。 Base64编码完美。 – Brad 2010-11-10 02:47:51

回答

0

转换为Base64完美工作。 (感谢,蓝)

发送到Web服务:

webAuth.VerifyFeatureSet(System.Convert.ToBase64String(myObject.Bytes) 

Web服务接收和解码:

Dim byteObject As Byte() = Convert.FromBase64String(serializedData)