Kann mir jemand helfen…
…bei meiner Android-App?
Vorgeschichte: Für mein praktisches Seminar möchte ich drei Apps entwickeln, jeweils eine für Android, iOS und Windows Phone 7. Diese sollen sich in ihrer Funktionalität und ihrem Aussehen nicht großartig voneinander unterscheiden. Bevor ich irgendeinen Unsinn zusammen programmiere, habe ich beschlossen eine App zu programmieren, die ich auch nutzen würde, die jedoch trotzdem nicht zu viel zusätzlichen Aufwand produziert.
Idee: Eine App, die das bei Last.fm aktuell gespielte Lied anzeigt mit der Möglichkeit dieses zu lieben.
Falls jemand nicht weiß was Last.fm ist, hier die wichtigsten Auszüge aus Wikipedia:
Last.fm ist ein Internetradio auf Basis von sozialer Software, das entwickelt wurde, um Nutzern aufgrund ihrer Hörgewohnheiten neue Musik, Menschen mit ähnlichem Musikgeschmack und Konzerte in ihrer Umgebung empfehlen zu können […] Hört ein Nutzer von Last.fm einen Musiktitel, so wird dessen Bezeichnung (Titelzeile und Interpret) an Last.fm übertragen und dort im Nutzerprofil gespeichert und anderweitig statistisch ausgewertet. Diesen Übertragungsvorgang bezeichnet Last.fm als „scrobbeln“. [wikipedia]
Mit Hilfe der Last.fm API kann man mit REST Requests auf die meisten Daten wie kürzlich gehörte Tracks zugreifen.
Bisheriger Stand: Begonnen habe ich mit der Android-App. Zuerst habe ich mit user.getRecentTracks den zuletzt gehörten Track zu erhalten. Anfrage habe ich mit HTTP Get gesendet und ein JSON Objekt zurückerhalten, klappt auch alles wunderbar. Mein nächster Schritt bestand in der Implementierung der User Authentification. Probleme gab es dabei bei der api method signature, das habe ich allerdings auch lösen können. Nun empfange ich einen gültigen Session Key und habe außerdem eine Methode, um die gewünschten Methoden-Signaturen zu erstellen. Soweit so gut.
Nun?: Möchte ich den aktuell gehörten Track “lieben”. Da es sich bei der Anfrage track.love um einen Write Service handelt, übertrage ich die Anfrage als HTTP Post Request. Aus der Beschreibung zu track.love:
Love a track for a user profile. This needs to be supplemented with a scrobbling submission containing the ‘love’ rating (see the audioscrobbler API).
schließe ich, dass ich mit track.updateNowPlaying Last.fm über den aktuell gehörten Titel informieren soll.
Also?: Habe ich eine Methode geschrieben, um einen HTTP Post Request durchführen zu können und die Response zu verarbeiten. Zuerst teste ich diese mit track.updateNowPlaying. Als Parameter übergebe ich den aktuell gehörten track und dessen artist (erhalte ich von user.getRecentTracks), meinen api_key, die erstellte api_sig und sk - den session key.
Aber?: Funktioniert nicht :-) Wahrscheinlich ist es ein total simpler Fehler, aber ich kriege einfach nicht heraus was ich falsch mache. Hier die Methode, mit der ich zuerst einmal den Status an Last.fm schicken möchte::
und hier die Fehler aus dem LogCat:
Es ist mir klar, dass “ HttpResponse response = httpclient.execute(httppost);” nicht funktioniert und dabei die Fehler entstehen. Folglich muss irgendetwas mit den Parametern nicht stimmen, allerdings habe ich diese überprüft. Abgesehen davon habe ich meine Frage auch schon bei StackOverflow gepostet und in der Last.fm-WebService Gruppe, allerdings noch keine Antwort erhalten. Außerdem habe ich bei GitHub nach ähnlichem Code gesucht, aber nichts brauchbares gefunden.
Was ich hoffe?: Wenn irgendjemand mir weiterhelfen kann, sei es indem er den Fehler sieht oder Tipps hat, wie man das anders lösen könnte oder jemanden kennt, der davon Ahnung hat, würde ich mich sehr freuen :-)
-
von sumisu gepostet

