2016-05-02 15 views
-1

Hallo Ich habe einfach Json wie auf dem Server schreiben unterAndroid Beitrag Json Data Server mit Retrofit 2

{ 
    "Key":"KEY", 
    "Token":"", 
    "Data": 
    { 
     "Country": "India", 
     "CountryCode":"IN", 
     "MobileNumber":"+91111111111" 
    } 
} 

Wie kann ich diese Daten an den Server schreiben Sie mir bitte helfen I Interface in dieses i erstellt haben habe schreiben

@POST("/user/register/") 
Call<Login> Registration(@Body Login login, Callback<Login> callBack); 

ist das ok? Wie kann ich das nennen?

Ich habe es gebraucht wie

Login login = new Login(); 
     com.j2ml.casualtrack.pojo_Request.Data data = new com.j2ml.casualtrack.pojo_Request.Data(); 
     data.setMobileNumber("+911234567890"); 
     data.setCountry("India"); 
     data.setCountryCode("IN"); 
     login.setData(data); 
     login.setToken("MY TOKEN KEY"); 
     login.setKey(""); 
     final ProgressDialog loading = ProgressDialog.show(this, "Registration in progress..", "Please wait...", false, false); 
     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(Urls.URL) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 
     service = retrofit.create(RestAPI.class); 
     service.Registration(login, new Callback<Login>() { 
      @Override 
      public void onResponse(Response<Login> response, Retrofit retrofit) { 
       System.out.println("Response: " + response.isSuccess()); 
       loading.dismiss(); 
      } 

      @Override 
      public void onFailure(Throwable t) { 
       System.out.println("ERROR ..."+t.getMessage()); 
      } 
     }); 

Aber ich erhalte diesen Fehler

java.lang.IllegalArgumentException: No Retrofit annotation found. (parameter #2) 
+0

anstatt einzelne Daten zu posten, einfach alle Daten zur Zeit posten. Erstelle ** POJO ** deiner json Datei ..... benutze diesen Link für ** POJO ** Umwandlung deiner ** JSON ** Datei : -http: //pojo.sodhanalibrary.com/ – sushildlh

+0

Link ist nicht da :) – user3332437

+0

bro bitte siehe Kommentar bearbeiten Ich erwähne den Link dort ... 2 Klasse erstellt von diesem Link verwenden beide Klasse in Ihrem Projekt ... – sushildlh

Antwort

0

Verwendung dieser Code ..... für Retrofit

@POST("/user/register/") 
Call<YourClass> createUser(@Body YourClass data); 

statt von YourClass setzen Sie Ihre POJO class, die alle Daten haben ... .

und rufen Sie Retrofit für POST die Daten an den Server.

Retrofit retrofit = new Retrofit.Builder() 
.baseUrl("https://XXXXXXXXX.com") 
.addConverterFactory(GsonConverterFactory.create()) 
.build(); 

YourClass you=new YourClass(); 
you.Key="new Key";//put all data like that in this class. 

RegisterAPI api = retrofit.create(RegisterAPI.class); 


Call<YourClass> call=api.createUser(you); 
call.enqueue(new Callback<YourClass>() {}); 

Fühlen Sie sich frei zu fragen, ob irgendein Fehler kommen ....

diese Zeile entfernen ....

com.j2ml.casualtrack.pojo_Request.Data Data = new com.j2ml.casualtrack.pojo_Request.Data(); 

und versuchen, dies auch

data.setMobileNumber("+911234567890"); 
    data.setCountry("India"); 
    data.setCountryCode("IN"); 

anstelle von oben verwenden Sie dieses ...

login.Data.setMobileNumber("+911234567890"); 
    login.Data.setCountry("India"); 
    login.Data.setCountryCode("IN"); 

genießen Codierung .....

+0

Ich habe Nachricht wie System.out gedruckt.println ("Antwort:" + response.isSuccess()); System.out.println ("NACHRICHT:" + response.message()); aber es Anzeige Antwort: falsch NACHRICHT: nicht akzeptabel – user3332437

+0

schreiben Sie den Rückhand Code für die POST-Daten in den Server? – sushildlh

+0

Verwenden Sie diesen Link: -https: //www.simplifiedcoding.net/android-retrofit-tutorial-to-insert-into-mysql-database/ – sushildlh

0

Wenn Sie möchten, um ein Objekt senden (unter der Annahme, dass das Objekt in einem Format wie Prüfklasse .Hier Daten ist eine weitere Liste Objekt mit dem Attribut [Land, Ländercode , Mobilnummer] für jeden).

class Test { 
@SerializedName("key") 
int key; 
@SerializedName("token") 
string token; 
@SerializedName("data") 
ArrayList<Data> data; } 

Wenn Sie dieses Objekt auf den Server stellen, wird es den von Ihnen gewünschten JSON benötigen.

{ 
"Key":"", 
"Token":"", 
"Data": 
{ 
    "Country": "", 
    "CountryCode":"", 
    "MobileNumber":"" 
} 
} 

Sie können @Body in diesem Fall wie verwenden. In-Service können Sie direkt etwas wie

@POST(URL) 
public Call<Test> postTest(@Body Test instanceOfTest); 

hoffe, dies wird Ihnen helfen.