2016-10-12 18 views
0

私はRestサービスを使用して、データベースから国(countryid)の州のリストを取得しています。このサービスはTomcatでもうまく動作しますが、Androidでは実行されません。以下は、Restサービスを呼び出すためのコードです。 params.put( "countryid"、countryID)メソッドは整数を受け取りません。この問題に就いて私を助けてください。RequestParams params.putメソッドは整数を受け取りません

public void getDataForStateSpinner(){ 
    //new StateSpinnerAsync().execute(); 
    System.out.println("getDataForStateSpinner(), spnCountry adapter: " + spnCountry); 
    System.out.println("spnCountry.getSelectedItem(): " + spnCountry.getSelectedItem()); 
    if (spnCountry.getSelectedItem()!=null){ 
     System.out.println("getDataForStateSpinner(), spnCountry adapter isn't empty"); 
     final Country country = (Country) spnCountry.getSelectedItem(); 
     int countryID = country.getCountryID(); 
     RequestParams params = new RequestParams(); 
     if (countryID>=0){ 
      params.put("countryid", countryID); 
      invokeWS_State(params); 
     } else{ 
      Toast.makeText(mParent.get(), "Can not get CountryID", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

    public void invokeWS_State(RequestParams params){ 
    System.out.println("Inside invokeWS_State"); 
    AsyncHttpClient client = new AsyncHttpClient(); 
    System.out.println("Inside invokeWS_State, client: " + client); 
    System.out.println("Inside invokeWS_State onSuccess, params: " + params); 
    client.get(stateURL, params, new AsyncHttpResponseHandler(){ 
     @Override 
     public void onSuccess(String respond){ 
      try{ 
       System.out.println("Inside invokeWS_State onSuccess, stateURL: " + stateURL); 

       System.out.println("Inside invokeWS_State onSuccess, respond:" + respond); 
       JSONArray jsonArr = new JSONArray(respond); 
       //JSONObject jsonObject = jsonArr.getJSONObject(0); 
       System.out.println("Inside invokeWS_State onSuccess jsonArr:" + jsonArr); 
       String stateList = jsonArr.toString(); 
       System.out.println("Inside invokeWS_State onSuccess stateList:" + stateList); 
       states = (ArrayList<State>) fromJasonToJava_State(stateList); 
       for (State state : states) { 
        System.out.println("State id: " + state.getStateID() + " name: " + state.getStateName()); 
       } 

       spnStateAdapter = new ArrayAdapter<State>(mParent.get(), android.R.layout.simple_spinner_dropdown_item, states); 
       spnStateAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       spnState.setAdapter(spnStateAdapter); 

      } catch (JSONException e){ 
       e.printStackTrace(); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
     @Override 
     public void onFailure(int statusCode, Throwable error, String content){ 
      String resultString = null; 
      if (statusCode == 404){ 
       resultString = "Requested resource not found"; 
       Toast.makeText(mParent.get(), resultString, Toast.LENGTH_LONG).show(); 
      } else if (statusCode == 500) { 
       resultString = "Something went wrong at server end!"; 
       Toast.makeText(mParent.get(), resultString, Toast.LENGTH_LONG).show(); 
      } else { 
       resultString = "Unexpected Error occcured! [Most common Error: Device might not be connected to Internet or remote server is not up and running]"; 
       Toast.makeText(mParent.get(), resultString, Toast.LENGTH_LONG).show(); 
      } 

     } 
    }); 
} 

、以下のTomcatでよく走るRESTサービスである:

@Path("/State") 
public class StatesResource { 
@GET 
@Path("/GetStates") 
@Produces(MediaType.APPLICATION_JSON) 
//http://localhost:8080/com.fms.FMSRestfulWS/State/GetStates?countryid=1 
public String getStates(@DefaultValue("1") @QueryParam("countryid") int countryID){ 
    String states = null; 
    try{ 
     ArrayList<State> feedData = null; 
     StateLoading stateLoading = new StateLoading(); 
     feedData = stateLoading.getAllStatesForCountry(countryID); 
     Gson gson = new Gson(); 
     states = gson.toJson(feedData); 
    }catch (Exception e){ 
     System.out.println("System Error " + e); 
    } 

    return states; 
} 

}

答えて

1

だけ1つの変更を行い、それが完璧に動作します。

+0

私はそうしています... –

+0

countryIDを文字列にするために ""を追加したとしますか?しかし、サービスのcountryidは整数です。 –

+0

ええ、実際にgetParams()メソッドは整数を受け付けないので、文字列にintegerで二重引用符を使用するようにします。 –

関連する問題