私のアンドロイドデバイスの.netプロジェクトからデータを取得しようとしています。アンドロイドとの間でデータを送受信します
DefaultHttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://192.168.0.100/protobufnet/Default.aspx");
HttpResponse response;
response = client.execute(request);
DataPacket.Data data = DataPacket.Data.parseFrom(response.getEntity().getContent());
をDataPacket.Dataは私が手で書いて、この
message Data {
required int32 Status = 1;
message Building {
required string Id = 1;
optional string Name = 2;
optional string Description = 3;
message RentSpace {
required string Id = 1;
optional string Name = 2;
optional string Description = 3;
message Year {
required int32 Year = 1;
message Item {
required string Id = 1;
optional string Name = 2;
optional string Description = 3;
optional string FunctionDescription = 4;
required bool Marked = 5;
required bool Remark = 6;
required bool SelfLearning = 7;
optional string Comment = 8;
repeated bool ActiveMonths = 9 [packed=true];
}
repeated Item Items = 2;
}
repeated Year Years = 4;
}
repeated RentSpace RentSpaces = 4;
}
repeated Building Buildings = 4;
}
のように見える私の.protoファイルから自動生成されています:私はこのコードを使用していますAndroid上
今、私はこの.protoファイルに対して.netプロジェクトの検証を行う方法を知らないので、私はちょうど私がこれと同じであると仮定したものをコード化しました:
[ProtoContract]
public class DataPacket
{
[ProtoMember(1)]
public int Status { get; set; }
[ProtoMember(2)]
public List<Building> Buildings { get; set; }
}
[ProtoContract]
public class Building
{
[ProtoMember(1)]
public String Id {get;set;}
[ProtoMember(2)]
public String Name {get;set;}
[ProtoMember(3)]
public String Description {get;set;}
[ProtoMember(4)]
public List<RentSpace> RentSpaces { get; set; }
}
[ProtoContract]
public class RentSpace
{
[ProtoMember(1)]
public String Id {get;set;}
[ProtoMember(2)]
public String Name {get;set;}
[ProtoMember(3)]
public String Description {get;set;}
[ProtoMember(4)]
public List<YearList> Years {get;set;}
}
[ProtoContract]
public class YearList
{
[ProtoMember(1)]
public int Year;
[ProtoMember(2)]
public List<ListItem> Items {get;set;}
}
[ProtoContract]
public class ListItem
{
[ProtoMember(1)]
public String Id {get;set;}
[ProtoMember(2)]
public String Name {get;set;}
[ProtoMember(3)]
public String Description {get;set;}
[ProtoMember(4)]
public String FunctionDescription { get; set; } //how to do the control
[ProtoMember(5)]
public bool Marked { get; set; }
[ProtoMember(6)]
public bool Remark { get; set; }
[ProtoMember(7)]
public bool SelfLearning { get; set; }
[ProtoMember(8)]
public string Comment { get; set; }
[ProtoMember(9)]
public bool[] ActiveMonths { get; set; }
しかし、動作しません。私はどちらかを参照する必要があります.netプロジェクトを使用するか、私の.protoを検証するためにそれを強制的に
非常に迅速に対応していただきありがとうございます。 protoファイルでVSツールを使用しましたが、これは1つの例外を除いて美しく見えます:.protoの "Building Buildings = 4;設定されていないプロパティを取得するだけです。だから私は建物のリストを設定することはできません。 –
@Rickardコレクションのプロパティがget-onlyになるのはかなり普通です。ちょうどAdd/Clear/AddRangeなどを取得/設定したい場合、xsltは編集可能です –
私は何年も前に.netをやっておらず、 、 ありがとうございました。どのくらい早くあなたがここに返信するのを好き: –