Laden...

Protobuffer Response nicht eindeutig

Erstellt von Kalimkaka vor 7 Jahren Letzter Beitrag vor 7 Jahren 2.268 Views
K
Kalimkaka Themenstarter:in
22 Beiträge seit 2014
vor 7 Jahren
Protobuffer Response nicht eindeutig

Hallo,

ich muss mich noch einmal zum Thema Protobuff melden, bzw. etwas nachfragen.

Wir haben einen Server, auf dem eine Api läuft, von der wir verschiedenste Livedaten erhalten.
In der Doku steht, dass man die Api mit dem Protobufheader und einer gZip Komprimierung ansprechen soll.
Das erstere habe ich nun versucht.
Leider kommen, so wie ich das sehen, nur cryptische antworten zurück.

Lg
Kali

5.657 Beiträge seit 2006
vor 7 Jahren

Hi Kalimkaka,

wo genau liegt das Problem? Bitte genauer beschreiben und evtl. die betreffenden Code-Ausschnitte posten. Siehe [Hinweis] Wie poste ich richtig?, Punkt 4, 5 und 6.

Den Link zum Code habe ich daher entfernt.

Weeks of programming can save you hours of planning

W
872 Beiträge seit 2005
vor 7 Jahren

In der Spezifikation für Protobufer gibt es keinen klassischen Header.
Warum man noch gzip dazu braucht, verstehe ich auch nicht - das würde nur Sinn machen, wenn man sehr viele Strings hat.
Die Referenz zu Protobuffer findest Du unter Protocol Buffers.

K
Kalimkaka Themenstarter:in
22 Beiträge seit 2014
vor 7 Jahren

Hallo,

sorry für die späte Antwort.

Also, ich habe zuerst einmal versucht, eine Connection mit der API aufzubauen, wie in folgendem Code zu sehen:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://url/api/api?");
             request.Accept = "application/x-protobuf";

            WebResponse response = request.GetResponse();
            Console.WriteLine(((HttpWebResponse)response).StatusDescription);
            Stream dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);
            string responseFromServer = reader.ReadToEnd();
            Console.WriteLine(responseFromServer);
            reader.Close();
            response.Close();
            Console.ReadLine();

Dabei bekomme ich dann folgendes zurück:

??????????V ?? ?ABkZ?Hallenbad????????????

Das könnte durchaus richtig sein, denke ich, da es sich um einen Binären Response handelt, oder?

Aber wie kann ich nun weiter machen bzw. wie kann ich nun meine Generierte Klasse (aus den .proto - Files) damit "verknüpfen"?

Lg

16.806 Beiträge seit 2008
vor 7 Jahren

Bitte Code in Beiträge einbetten.
[Hinweis] Wie poste ich richtig?

K
Kalimkaka Themenstarter:in
22 Beiträge seit 2014
vor 7 Jahren

Okay, ich bin ein Stück weiter:




  var webRequest = (HttpWebRequest)WebRequest.Create("url");
            webRequest.Method = "POST";
            webRequest.Accept = "application/x-protobuf";
            WebResponse response = webRequest.GetResponse();
            var responseStream = response.GetResponseStream();

           var gh =  ProtoBuf.Serializer.Deserialize<class>(responseStream);



So weit bin ich, leider ist mein Stream immer 0...

Gibt es dazu ggf. eine Lösung? 😃