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
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
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.
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
Bitte Code in Beiträge einbetten.
[Hinweis] Wie poste ich richtig?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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? 😃