【问题标题】:How to pass a string to a method that decodes a string64?如何将字符串传递给解码 string64 的方法?
【发布时间】:2016-07-28 22:30:44
【问题描述】:

我在 Windows Phone7 应用程序(VS2010)中使用 Web 服务,

该服务有一个验证用户名和密码的方法,但是在我从最终用户的文本框中获取用户名和密码并调用该服务后,验证会引发如下异常:

FaultException 未处理

System.Web.Services.Protocols.SoapException:服务器无法处理请求。 ---> System.FormatException:Base-64 字符数组或字符串的长度无效。 在 System.Convert.FromBase64_Decode(Char* startInputPtr, Int32 inputLength, Byte* >startDestPtr, Int32 destLength)

在 System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength)

在 System.Convert.FromBase64String(String s)

在 myService.Mobile.Decode(String str)

....

---内部异常堆栈跟踪结束---

嗯,基本上这个异常告诉我invalid length for base-64 char array or string. 当我传递一个四个字符或四个字符的倍数的字符串时,它可以工作。

我应该怎么做才能解决这个问题?

【问题讨论】:

  • 你如何调用服务?
  • 如果你是这个意思,我正在使用肥皂客户端。
  • 根据@Marc Gravell 的回答,您需要对其进行 Base-64 编码并将其发送到服务。

标签: c# string


【解决方案1】:

该方法显然需要 base-64,这是一种将任意二进制编码为编码字符串的方法。那么,有趣的问题是:他们期望什么字节?一个合理的第一个猜测可能是 UTF-8,在这种情况下:

byte[] bytes = System.Text.Encoding.UTF8.GetBytes(originalString);
string base64 = System.Convert.ToBase64String(bytes);

不过,这似乎是一种非常不寻常的传递用户名的方式!你确定这是在谈论用户名吗?

【讨论】:

  • @jackjop 我必须强调:这是编写该 API 的人的一种不同寻常的方法
猜你喜欢
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-22
  • 1970-01-01
  • 2012-09-07
  • 2021-09-20
  • 2012-10-11
相关资源
最近更新 更多