如何从服务器获取json响应并使用Retrofit将它们存储在Arraylist中?

时间:2016-11-19 11:30:14

标签: android retrofit

我正在尝试从服务器获取Json响应并将其作为arraylist传递给下一个活动。这与排球很好,但我无法通过改造得到回应。这是我的代码。

public class MainActivity extends AppCompatActivity {


public static final String ROOT_URL = "http://#####.####/";

String username;
String password;

private Button makerequest;

private ProgressDialog pdialog;

private EditText edittextusername;
private EditText edittextpassword;

private String DataArray[] = new String[15];

private ArrayList<Result> dataarr = new ArrayList<>();

int i=0;






@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    makerequest = (Button) findViewById(R.id.btnObjRequest);


    edittextpassword = (EditText) findViewById(R.id.editpassword);
    edittextusername = (EditText) findViewById(R.id.editusername);

    pdialog = new ProgressDialog(this);
    pdialog.setMessage("wait kar be...");
    pdialog.setCancelable(false);


    makerequest.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            makejsonobjectrequest();
        }
    });


}


private void makejsonobjectrequest(){


    username = edittextusername.getText().toString().trim();
    password = edittextpassword.getText().toString().trim();


    RestAdapter adapter = new RestAdapter.Builder()
            .setEndpoint(ROOT_URL)
            .build();


    //creating object of our interface
    DataApi data = adapter.create(DataApi.class);

    //defining the method.
    data.getposition(username, password, new Callback<ArrayList<Result>>() {


                @Override
                public void success(ArrayList<Result> list, Response response) {




                   dataarr= list;



                    Bundle b = new Bundle();
                    b.putSerializable("array", dataarr);
                    Intent intent = new Intent(getBaseContext(), Display.class);
                    intent.putExtras(b);
                    startActivity(intent);


                }

                @Override
                public void failure(RetrofitError error) {

                    Toast.makeText(getBaseContext(), error.toString(),Toast.LENGTH_SHORT).show();


                }
            });

}
}

2 个答案:

答案 0 :(得分:0)

点击此链接,您将使用改造库http://www.androidhive.info/2016/05/android-working-with-retrofit-http-library/

获得json响应

答案 1 :(得分:0)

当您期望的响应不是来自服务器时,通常会出现此类错误。

我认为您应首先检查来自服务器的响应格式是否正确,以便您的应用程序可以正确解析它。

如果您使用的是Android工作室,您可以在发送请求后看到您发送的请求以及在Android监视器中用于该请求的Url,尝试使用https://www.getpostman.com/等应用程序发送您的请求并查看是否你从服务器得到了正确的答复。

希望这会有所帮助。