ProtoBuf / Android Market API från .NET (och PHP)

Diskussion i 'Frågor, support och diskussion' startad av yrara, 10 maj 2010.

  1. yrara

    yrara Teen Droid Medlem

    Blev medlem:
    30 sept 2009
    Inlägg:
    428
    Mottagna gillanden:
    8

    MINA ENHETER

    Jag försöker kommunicera med Android Market från C#.NET. Någon som har någon erfarenhet i området?

    Det finns ju en java-klient, som jag gett mig på att konvertera, men inte kommit så långt med ännu.

    Framförallt har jag problem med ProtoBuf. Någon som är insatt där? Både Marc Gravell och Jon Skeet har ju gjort protobuf-implementationer i .NET, men de verkar främst gå ut på att serialisera filer. Det enda jag är intresserad av är ju att serialisera/deserialisera HTTP-POST-data. Någon som haft någon framgång med det här över huvud taget?
     
    Last edited: 22 jun 2010
    splitfeed gillar detta.
  2. yrara

    yrara Teen Droid Medlem

    Blev medlem:
    30 sept 2009
    Inlägg:
    428
    Mottagna gillanden:
    8

    MINA ENHETER

    Jag undrar ingenting längre :O

    Har lyckats åstadkomma det jag vill, för tillfället... Delar gärna med mig av kod, men tror det är mer av en otjänst i det kaotiska stadie det är just nu, med test-kod i hundra olika riktningar innan jag fick kläm på vad det var jag skulle göra.

    Nu när jag vet vilken kod som fortfarande behövs, så kan jag börja plocka bort allt skräp, och lägga upp alltihop nånstans, men det kan ta en tid... fråga gärna om det är någon som undrar något specifikt, fram till dess...
     
  3. asperon

    asperon Adult Droid Medlem

    Blev medlem:
    6 aug 2009
    Inlägg:
    586
    Mottagna gillanden:
    94
    Operatör:
    Tele2
    Telefon:
    Pixel 6

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Pixel 6
    Jag är intresserad, har haft ambitionen att porta detta till php, så jag kan få ut lite stats om mina apps till min sajt.
     
  4. yrara

    yrara Teen Droid Medlem

    Blev medlem:
    30 sept 2009
    Inlägg:
    428
    Mottagna gillanden:
    8

    MINA ENHETER

    Alright; Java-klienten har kanske minst lika stora likheter med PHP som C#-klienten, men visst, jag har ändrat flödet en hel del, på ett sätt som i alla fall är mer naturligt för mig, och städat upp.

    Lägger upp lite kod när jag sitter vid den datorn :)
     
  5. yrara

    yrara Teen Droid Medlem

    Blev medlem:
    30 sept 2009
    Inlägg:
    428
    Mottagna gillanden:
    8

    MINA ENHETER

    Alright, mitt eget API ligger uppe här:
    http://code.google.com/p/android-market-api-net/

    Det använder sig av externa bibliotek för ProtoBuf-serialisering, och för att zippa upp GZip-strömmen som jag får tillbaka. Det är fullt möjligt att sistnämnda inte behövs ifall man inte skickar med i request headers att man accepterar GZip, så det kan du ju experimentera med, om du vill slippa den biten, men i .NET är det ju lika lätt att bara ha med.

    Vet inte hur väl det lånar sig till PHP-port. Det finns ju en Ruby-port som kanske är lättare att använda:
    http://github.com/jberkel/supermarket

    Annars kan jag nog skriva ihop ett enkelt commandline-verktyg som du kan anropa från PHP, men det kommer ju att kräva .NET-ramverket installerat på servern i vilket fall...
     
  6. yrara

    yrara Teen Droid Medlem

    Blev medlem:
    30 sept 2009
    Inlägg:
    428
    Mottagna gillanden:
    8

    MINA ENHETER

    Det ligger några operatörer förprogrammerade, men här är några andra du kan använda:
    http://www.activexperts.com/xmstoolkit/networkcodes/

    Vad jag kan se så är det operatör som styr vilka apps som finns tillgängliga ( om man valt bort en speciell operatör i market, eller om det är en betal-app ), och locale som styr vilket språk man får kommentarer på (säkert även beskrivning m.m. ifall man har lokaliserat det)
     
  7. splitfeed

    splitfeed Kid Droid Medlem

    Blev medlem:
    28 aug 2009
    Inlägg:
    52
    Mottagna gillanden:
    4

    MINA ENHETER

    Är det någon som pillat med detta från PHP än? Är lite sugen på att komma åt market datan också :)
     
  8. asperon

    asperon Adult Droid Medlem

    Blev medlem:
    6 aug 2009
    Inlägg:
    586
    Mottagna gillanden:
    94
    Operatör:
    Tele2
    Telefon:
    Pixel 6

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Pixel 6
    Vi kanske ska göra en gemensam insatts, ska se om jag kan hitta lite tid till att pilla med det i helgen.
     
  9. splitfeed

    splitfeed Kid Droid Medlem

    Blev medlem:
    28 aug 2009
    Inlägg:
    52
    Mottagna gillanden:
    4

    MINA ENHETER

    Jag har lite taskigt med tid att lägga på kodningen, men det känns som ett kul projekt att få till detta via PHP.

    Det finns ju ett ProtoBuf för PHP, http://code.google.com/p/pb4php/, så det enklaste kanske är att implementera om Java-versionen som ren PHP.
     
  10. asperon

    asperon Adult Droid Medlem

    Blev medlem:
    6 aug 2009
    Inlägg:
    586
    Mottagna gillanden:
    94
    Operatör:
    Tele2
    Telefon:
    Pixel 6

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Pixel 6
    Ja, det verkar helt klart görbart, om jag hinner i helgen så ska jag titta lite på det.
     
  11. yrara

    yrara Teen Droid Medlem

    Blev medlem:
    30 sept 2009
    Inlägg:
    428
    Mottagna gillanden:
    8

    MINA ENHETER

    ProtoBuf är bara ett ramverk för serialisering. Finns det något färdigt för PHP så kommer det vara värt rätt mycket för er att använda er av det. Själv använde jag mig av Marc Gravell's ProtoBuf.NET för att skapa alla klasser, utifrån market.proto-filen (som ligger i /Proto på google code), samt för att serialisera/deserialisera dessa klasser, vid kommunikation med Google.

    En lurig grej att tänka på, om ni bygger något eget, är att deras webrequests inte tar emot POST-data rakt av

    PHP:
    &query=smooth+calendar
    ...utan istället i formatet

    PHP:
    Base64( &query=smooth+calendar )
    &
    version=2&request=x
    Nåja... min och andras kod på området ska förhoppningsvis vara lättläst så det räcker.

    Det hade ju gått att skriva en snygg öppen webbservice till det, men min egen server skulle knappast klara av att hosta det till någon större belåtenhet. Kanske något för Swedroid?
     
  12. splitfeed

    splitfeed Kid Droid Medlem

    Blev medlem:
    28 aug 2009
    Inlägg:
    52
    Mottagna gillanden:
    4

    MINA ENHETER

    Jag testkörde pb4php mot market.proto lite kvickt och stötte på lite problem. Jag körde mot market.proto från android-market-api, ifall det gör någon skillnad. Orkade inte gräva i SDK:n just då ;)

    - Första raden, "option java_package ..." kastade exception
    - Alla klasser måste definieras i rätt ordning, så en inte refererar till en annan senare i dokumentet. (Issue 13)
    - Exceptions när vissa saker definierades som "repeated", vet dock inte om det gäller alla


    Detta är bara en snabbanalys och kan vara lättfixade saker om man vill ge sig in och hjälpa till i pb4php, men jag hittade även en protoc-plugin för att generera PHP-klasser som jag har tänkt kika på när tid finns:
    http://github.com/bramp/protoc-gen-php
     
  13. splitfeed

    splitfeed Kid Droid Medlem

    Blev medlem:
    28 aug 2009
    Inlägg:
    52
    Mottagna gillanden:
    4

    MINA ENHETER

    Labbade lite nu på lunchen med det senare alternativet, lyckades kompilera och koda ner en protobuffer och avkoda den igen. Verkar fungera finfint, så där har vi nog en lösning på PB-problemet :)
     
  14. yrara

    yrara Teen Droid Medlem

    Blev medlem:
    30 sept 2009
    Inlägg:
    428
    Mottagna gillanden:
    8

    MINA ENHETER

    Toppen.

    market.proto-filen är precis samma i android-market-api-projektet som i android-market-api-net
     
  15. splitfeed

    splitfeed Kid Droid Medlem

    Blev medlem:
    28 aug 2009
    Inlägg:
    52
    Mottagna gillanden:
    4

    MINA ENHETER

    Tänkte bara berätta att jag har lyckats köra mitt första anrop som inte ger "Bad Request" nu, så nästa steg är att tolka det servern returnerar till mig.
    Som jag förstått det från din och det andra API:ets kod är det en GZ-komprimerad protobuffer, stämmer det?
     
  16. splitfeed

    splitfeed Kid Droid Medlem

    Blev medlem:
    28 aug 2009
    Inlägg:
    52
    Mottagna gillanden:
    4

    MINA ENHETER

    Det där med GZ stod ju i ett av dina tidigare inlägg, ignorera den biten ;)
     
  17. asperon

    asperon Adult Droid Medlem

    Blev medlem:
    6 aug 2009
    Inlägg:
    586
    Mottagna gillanden:
    94
    Operatör:
    Tele2
    Telefon:
    Pixel 6

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    Pixel 6
    Kul, om du får det att lira posta gärna lite kod!
     
  18. splitfeed

    splitfeed Kid Droid Medlem

    Blev medlem:
    28 aug 2009
    Inlägg:
    52
    Mottagna gillanden:
    4

    MINA ENHETER

    Absolut, ska bara reda ut koden lite först också ;)
    Just nu är det riktig turbohackfulkod eftersom jag mer eller mindre bara testat mig fram, men jag har ett Google Code projekt startat där iaf proto-filen och output plugin till protoc finns om du vill pilla lite själv.

    http://code.google.com/p/android-market-api-php

    Jag lägger jättegärna till fler medlemmar om någon är intresserad men jag vill påpeka att jag aldrig arbetat på ett projekt i någon liknande form innan så det kan bli lite rörigt :o
     
    asperon gillar detta.
  19. splitfeed

    splitfeed Kid Droid Medlem

    Blev medlem:
    28 aug 2009
    Inlägg:
    52
    Mottagna gillanden:
    4

    MINA ENHETER

    Nu finns det ett åtminstone lite fungerande exempel uppe på projektsiten under trunk/examples/

    :)
     
  20. splitfeed

    splitfeed Kid Droid Medlem

    Blev medlem:
    28 aug 2009
    Inlägg:
    52
    Mottagna gillanden:
    4

    MINA ENHETER

    Liten skum grej som jag inte riktigt fattar.. När jag söker på t.ex. pname:jp.kuchen.now dyker motsvarande app upp, men när jag kör på pname:com.mhuang.overclocking för att få fram SetCPU dyker inget alls upp.
    Någon aning om varför den skulle bete sig annorlunda? Har provat både T-Mobile och O2-DE