2016-11-19 37 views
-1

我想從服務器獲取Json響應,並將其作爲arraylist傳遞給下一個活動。這適用於排球,但我無法通過改造得到迴應。這是我的代碼。如何從服務器獲取json響應並使用Retrofit將它們存儲在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(); 


       } 
      }); 

} 
} 
+0

錯誤是:retrofit.RetrofitError:com.google.gson.JsonSyntaxException:java.lang.illegalStateException:預期的BEGIN_ARRAY,但是BEGIN_OBJECT在line1列2路徑$。 –

+0

在這裏發佈回覆使用POSTMAN的JSON。這個錯誤來自bcoz json從簡單的對象開始,但你試圖把它放到ArrayList中。看起來像你一樣的問題http://stackoverflow.com/questions/40689691/how-do-i-store-the-json-response-from-my-server-to-an-arraylist-and-pass-到下一個/ 40690138#40690138 – sushildlh

回答

0

得到JSON響應通常這種類型的錯誤來當你期待的迴應不會從服務器來的。

我想你應該首先檢查你的服務器響應格式是否正確,以便你的應用程序可以正確解析它。

如果您使用的是android studio,您可以在發送請求後看到您發送的請求以及在Android監視器中用於該請求的Url,請嘗試使用像https://www.getpostman.com/這樣的應用程序發送您的請求並查看您是否得到正確服務器響應。

希望這有助於。

相關問題