Response.body () возвращает null, используя nodejs с модернизацией android - PullRequest
0 голосов
/ 06 мая 2020

Я использую nodejs с приложением android с использованием модификации.

У меня проблема с методом get.

login.js //Nodejs code

response.redirect("/details?vv="+ajx); //ajx contains the regno that means it contains 101

app.get('/details',(request, response) => 
{
    var ajx2=request.query.vv;
    var sql2 = "select * from student where regno='"+ajx2+"'";
                    connection.query(sql2, function (err, gk) 
                    {
                    if(gk.length > 0)
                    {   
                    Object.keys(gk).forEach(function(key){
                        var rea=gk[key];
                        const objToSend={
                            reg1:rea.regno,
                            name1:rea.s_name
                        }
                        response.status(300).send(JSON.stringify(objToSend))
                        console.log("True");
                        console.log(objToSend);
                        });
                    }
                    else
                    {
                    response.status(600).send() 
                    }
                    });
});

На моей консоли все работает нормально. True {reg1: '101', name1: 'XYZ'}

Но в android studio response.body () не работает, возвращает null.

RetrofitInterface.java

@GET("/details")
    Call<LoginResult> getLog(@Query("vv") String vv);
LoginResult.java

package com.example.nodue;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class LoginResult
{
 @SerializedName("reg1")
    @Expose
    private String reg1;

    public String getReg1()
    {
        return reg1;
    }
    public void setReg1(String reg1)
    {
        this.reg1=reg1;
    }
}

I am also tried without @SerializedName() and @Expose but its not working..
Only getter,setter its not working 
ThirdActivity.java

retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        RetrofitInterface request=retrofit.create(RetrofitInterface.class);
        Call<LoginResult> call=request.getLog(vv);
        call.enqueue(new Callback<LoginResult>() {
            @Override
            public void onResponse(Call<LoginResult> call, Response<LoginResult> response) {
                if(response.code()==300)
                {
                    LoginResult aji=response.body();  // its returns null..
                    Log.d("hh","Hwllo");
                    System.out.println(aji);
                    //listView.setAdapter(new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,go));
                    Toast.makeText(ThirdActivity.this,aji.getReg1(),Toast.LENGTH_LONG).show();
                }
            }
            @Override
            public void onFailure(Call<LoginResult> call, Throwable t) {
                Toast.makeText(ThirdActivity.this,t.getMessage(),Toast.LENGTH_LONG).show();
            }
        });
    }

Я использую тот же метод для получения списка деталей, используя List<LoginResult> aji=response.body. Здесь я могу получить несколько строк, все работает нормально. Таким образом, тот же метод, который я должен использовать для выборки одной строки без списка, я использую LoginResult aji=response.body(), но он возвращает null ... Пожалуйста, помогите мне ..

...