将Java字节转换为VB.NET字节的异常(WebService)

时间:2011-12-10 03:54:01

标签: java android .net web-services

我正在尝试使用Java 1.5从Android 2.3应用程序发送JSON字符串,将其转换为byte []到等待POST Base64Binary流的ASP.NET WebService方法。

这是我编码JSON字符串的Java代码:

String encoded = Base64.encodeToString(me.getValue().getBytes(), Base64.DEFAULT);

我是我的JSON字符串。

以下是我从ASP.NET获得的错误:

System.ArgumentException: Cannot convert eyJJZEV0YXRJbnNwZWN0aW9uIjoiMSIsIkFwcGxpY2FibGUiOiJUcnVlIiwiSWRFdGF0IjoiMSIsIklkVGFzayI6IjczOCIsIkRhdGVEZXJuaWVyTW9kaWYiOiIyMDExLTEyLTA5IDIwOjA5OjIyIiwiSWRDb250cmF0IjoiMzg1NTYiLCJJZFRhc2tDb250cmF0IjoiNDc5ODExMSJ9 to System.Byte.
 Parameter name: type ---> System.FormatException: Input string was not in a correct format.
    at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
    at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
    at System.Byte.Parse(String s, NumberStyles style, NumberFormatInfo info)
    at System.String.System.IConvertible.ToByte(IFormatProvider provider)
    at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
    at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
    --- End of inner exception stack trace ---
    at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
    at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
    at System.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequest request)
    at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
    at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

知道我为什么会收到此错误(我无法控制.NET端)?

谢谢! 尼古拉斯。

1 个答案:

答案 0 :(得分:2)

我之前遇到过类似的问题。我在Android上实现了一个代码,使用Base64进行SHA-1哈希处理。

我在.NET中的Web服务方法中也在服务器端进行SHA-1哈希

以下是我的服务器端代码(.asmx web服务)

   public class Service1 : System.Web.Services.WebService
      { 
            [WebMethod]
          public string HashCode(string str)
       {
          string rethash = "";
       try
         {

        System.Security.Cryptography.SHA1 hash = System.Security.Cryptography.SHA1.Create();
        System.Text.ASCIIEncoding encoder = new System.Text.ASCIIEncoding();
        byte[] combined = encoder.GetBytes(str);
        hash.ComputeHash(combined);
        rethash = Convert.ToBase64String(hash.Hash);
          }
      catch (Exception ex)
        {
        string strerr = "Error in HashCode : " + ex.Message;
        }
    return rethash;
     }
  }

这对我有用,我可以正确计算字节数组的哈希值。

希望这会给你一些想法,

干杯

一切顺利