Base64 文字列に変換しようとしている ArrayList が Android にあり、それを JSON を介して wcf サービスに渡し、wcf サービスが文字列をデータベースに挿入します。次に、データベースからそれを読み取り、.NET アプリケーションで逆シリアル化できるようにする必要があります。
これは、AndroidでArrayListをシリアル化する方法です:
private String convertByteArrayToSave(byte[] b){
if(b != null){
return Base64.encodeToString(b,0,b.length,Base64.DEFAULT);
}else{
return "";
}
}
private String convertListToStringToSave(ArrayList<myClasses.Shape> myList){
ByteArrayOutputStream b = new ByteArrayOutputStream();
ObjectOutputStream out;
try {
out = new ObjectOutputStream (b);
out.writeObject(myList);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return convertByteArrayToSave(b.toByteArray());
}
次に、WCF サービスで Base64 文字列を取得して List(Of Shape) に逆シリアル化し、それをシリアル化してデータベースに挿入しようとしています。
Private Function ConvertAndroidByteToDotNet(ByVal s As String) As Byte()
Dim result As Byte() = Nothing
Dim b As Byte() = CType(System.Convert.FromBase64String(s), Byte())
Dim msTest As New MemoryStream(b)
msTest.Seek(0, SeekOrigin.Begin)
msTest.Position = 0
Dim formatter As New Runtime.Serialization.Formatters.Binary.BinaryFormatter()
formatter.AssemblyFormat = Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
formatter.Binder = New BindChanger()
Dim shapelist As List(Of ColbyDataTypes.Shape) = DirectCast(formatter.Deserialize(msTest), List(Of ColbyDataTypes.Shape))
msTest.Close()
Dim bin As New Runtime.Serialization.Formatters.Binary.BinaryFormatter()
bin.AssemblyFormat = Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
bin.Serialize(msTest, shapelist)
result = msTest.ToArray()
Return result
End Function
最終的な目標は、.NET アプリまたは Android アプリでこれらの形状のリストを作成できるようにし、作成元に関係なく .NET アプリと Android アプリでリストを読み取れるようにすることです。.NET から Shape を作成し、WCF を使用してそれを Android に読み込むと、それが可能になりますが、Android で作成するのが行き詰まっています。どんな助けにも感謝します、ありがとう。