Veröffentlichung in der Ruby on Rails App von Android

8

Ich versuche also, von einer Android-App, die ich gerade schreibe, auf eine Rails-App zu schreiben. Ich bin in der Lage, erfolgreich von innerhalb der Schienen App zu posten. Ich konnte auch erfolgreich ein Chrome-Add-On namens Simple Rest-Client veröffentlichen.

Wenn ich versuche und von der Android-App aus poste, schlage ich die App "rails", erstelle aber einen leeren Post. Keine der Eingabedaten wird von Rails empfangen.

Ich habe gelesen, dass Anwendungen von Drittanbietern nur in Abhängigkeit von der Authentifizierung von einer Rails-App abzurufen sind, um sicherzustellen, dass dies nicht das Problem war, das ich meiner Rails-Konfiguration hinzugefügt hatte.

%Vor%

An dieser Stelle bin ich unsicher, wo mein Problem liegt, mit meinem Rails-Backend oder meinem Android-Client.

ok, also ist die Rails-Post-Methode in meinem Controller, die ich versuche zu erreichen, hier

%Vor%

Hier ist der Android-Java-Code zum Senden der Post-Anfrage. Dies ist die Methode, die die Benutzereingabedaten, die ich versuche, an POST

zu übergeben %Vor%

Und das ist die Klasse, an die es übergeben wird, indem man den HTTP-POST permormiert.

%Vor%

Dies ist das, was bei postparams in der obigen Klasse protokolliert wird, also weiß ich, dass Daten tatsächlich gesendet werden

%Vor%

Dies ist, was Log Cat als Antwort vom Server zeigt

%Vor%

Ich habe wirklich Mühe zu verstehen, wo das Problem liegt und ich habe es schon eine ganze Weile festgehalten. Jede Einsicht würde sehr geschätzt werden. Und wenn weitere Informationen benötigt werden, rufen Sie einfach.

Bearbeiten: Protokolle vom Server

Dies ist ein erfolgreicher Beitrag vom einfachen REST-Client

%Vor%

Dies ist von der Android App Buchung

%Vor%     
DavedCusack 03.04.2013, 20:57
quelle

2 Antworten

6

Sie legen einen Inhaltstyp von JSON fest, aber senden JSON nicht wirklich. Sie senden Standard-POST-URL-codierte Parameter.

Sie müssen tatsächlich ein JSON-Objekt senden:

%Vor%     
Cody Caughlan 04.04.2013, 00:08
quelle
1

Das Problem ist, dass wenn Sie den POST in Android erstellen, Sie die Entity (den Body) überschreiben. Du stellst es zuerst ein und dann stellst du es wieder ein und löschst effektiv aus, was du bereits eingestellt hast.

Das ist richtig:

%Vor%

Aber dann ein paar Zeilen später überschreiben Sie es mit:

%Vor%

Also ziehe diesen 2. setEntity() -Ruf ab.

Sie können erreichen, was Sie versuchen - indem Sie den POST-Text in UTF-8 einstellen, indem Sie Ihren Code wie folgt anpassen:

%Vor%     
Cody Caughlan 03.04.2013 23:23
quelle

Tags und Links