如何使用retrofit2解析json文件以进行登录?

问题描述 投票:0回答:1

首先;我是初学者,用于改造2。我正在尝试解析JSON文件。我的连接PHP文件是真的。 (它的名字是ayar.php)。我猜我的listeleme.php没有错,因为我可以看到所有的值。但当我点击我的按钮时,log cat给了我一个例外。我的目的是;我想查看我的列表以进行登录。 İf有这样的用户。活动传递给其他活动让我敬酒。例外:

com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 2 column 40 path $[1]

listeleme.php:

<?php
include ('ayar.php');

class kullanici
{
    public $id = "";
    public $isim = "";
    public  $sifre = "";


}
$kl = new kullanici();

$bak = mysqli_query($connect, "select * from kullanici" );
$değer = mysqli_num_rows($bak);
$sayac = 0 ;
echo ("[");
while ($göster = mysqli_fetch_assoc($bak))
{
      $sayac = $sayac+1 ;
    $kl ->id=$göster["id"];
    $kl ->isim=$göster["isim"];
    $kl ->sifre=$göster["sifre"];
    echo(json_encode($kl));
    if ($sayac != $değer)
    {
        echo (",");

    }
    echo ("]");


}
?>

我的模特课:

public class kullanici {
    private String sifre;
    private String id;
    private String isim ;

    public String getSoyad() {
        return sifre;
    }

    public void setSoyad(String sifre) {
        this.sifre = sifre;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getIsim() {
        return isim;
    }

    public void setIsim(String isim) {
        this.isim = isim;
    }

    @Override
    public String toString() {
        return "kullanici{" +
                "sifre='" + sifre + '\'' +
                ", id='" + id + '\'' +
                ", isim='" + isim + '\'' +
                '}';
    }
}

休息Api界面:

public interface RestApi {
//2 Cİ yapılan iş.
    @FormUrlEncoded
    @POST("/ekle.php")// url nin sonundaki isim.
    // Post edilecek değişkenlerin adı oldugu gibi yazılır.
//phpbyadmin" deki aynı isim olmasına gerek yok.
    Call<Result> addUser(@Field("ad") String ad ,  @Field("eposta")String eposta , @Field("sifre")String sifre ,@Field("cinsiyet")
            String cinsiyet , @Field("telefon_number") String telefon_number , @Field("dogum_tarihi") String dogum_tarihi
    , @Field("sehir") String sehir , @Field("ilce") String ilce);



   @GET("/listeleme.php")
    Call<List<kullanici>> listele();
}

经理所有班级:

public class ManagerAll extends BaseManager {


private static ManagerAll ourinstance = new ManagerAll();


public static synchronized ManagerAll getinstance()
{


    return  ourinstance ;
}

public Call<Result> ekle (String ad , String eposta ,String sifre ,   String cinsiyet ,String telefon_number, String dogum_tarihi
,String sehir ,String ilce){
Call<Result> x = getRestApi().addUser(ad,eposta ,sifre,cinsiyet,telefon_number,dogum_tarihi,sehir,ilce);

return x ;


}

public Call<List<kullanici>> checkusers(){

    Call<List<kullanici>> y = getRestApi().listele();
    return y;

}


    }

最后我的活动:

 giris_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String kullanıcı = kullanıcı_edittext.getText().toString();
                String sifre = sifre_edittext.getText().toString();


                retrofit2.Call<List<kullanici>> y = ManagerAll.getinstance().checkusers();
                y.enqueue(new Callback<List<kullanici>>() {
                    @Override
                    public void onResponse(Call<List<kullanici>> call, Response<List<kullanici>> response) {
                        Log.i(TAG, "Sonuc: " + response.body().toString());
                        Toast.makeText(giris_ekrani.this, "It works", Toast.LENGTH_SHORT).show();
                        Intent bottom_bar_intent = new Intent(giris_ekrani.this ,bottom_bar.class);
                        startActivity(bottom_bar_intent);
                    }

                    @Override
                    public void onFailure(Call<List<kullanici>> call, Throwable t) {
                        Toast.makeText(giris_ekrani.this, "doesnt", Toast.LENGTH_SHORT).show();
                        Log.i(TAG, "Sonuc: " + t.toString());
                    }
                });

这是我的json值:

[{"id":"9","isim":"as","sifre":"123"},{"id":"10","isim":"selam","sifre":"1234"},{"id":"11","isim":"berkay214214","sifre":"315"},{"id":"12","isim":"werew","sifre":"0"},{"id":"13","isim":"berk","sifre":"1234"}]
php android json get retrofit2
1个回答
1
投票

设置Retrofit使用GsonConverterFactory。通过这种方式,解析JSON会容易得多。例如:

 private static Retrofit retrofit;

public static Retrofit getRetrofit() {
    if (retrofit == null)
        retrofit = new Retrofit.Builder().baseUrl(BASE_URL)
                .client((new OkHttpClient()))
                .addConverterFactory(GsonConverterFactory
                        .create())
                .build();
    return retrofit;
}

你还需要添加gradle

implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
© www.soinside.com 2019 - 2024. All rights reserved.