我正在为各种自动更新订阅的iOS应用程序实现应用程序内购买。当付款完成后,我们需要将交易信息发送到我们的服务器(云)以记录信息,以便我们可以在设定的时间间隔内验证收据,以确保订阅有效,而不是取消/退款或续订。我们将通过设定的时间间隔在服务器上设置JSON调用,通过应用内购买指南和我们共享的秘密来完成此操作,但尚未达到此目的,但在我们确实需要购买相关数据之前,即TransactionReceipt是一个NSData对象。将NSData转换为base64encoded并将字节数组转换为C#
我们希望将两个参数发送到我们的Web服务中的TransactionReceipt(以及其他项目,例如购买的ProductID等)。我们希望将这个值作为base64encoded值发送,这是我们认为需要在JSON请求中进行验证的值,因此我们将其存储在SQL Server中。
如果使用MonoTouch/C#,我们可以将NSData“TransactionReceipt”转换为base64encoded还是byte []?
谢谢。
当我尝试使用ToByte方法时,出现了这个错误: //消息:不支持NSMutableData的包装,请调用new UnmanagedMemoryStream((Byte *)mutableData.Bytes,mutableData.Length) //例外:Wrapper对于NSMutableData不支持,请在/ Developer/MonoTouch/Source/monotouch/src中调用新的UnmanagedMemoryStream((Byte *)mutableData.Bytes,mutableData.Length),而不是:::在MonoTouch.Foundation.NSData.AsStream()[0x0002f] /shared/Foundation/NSData.cs:14 – Neal
不是每个'NSData'都是可变的,'AsStream'会检查这个,请参阅:https://github.com/mono/maccore/blob/master/src/Foundation/NSData .cs#L136您可以尝试建议的代码(即'UnmanagedMemoryStream')或我提供的第二版ToByte(使用'Marshal'并复制数据)。 – poupou