2015-08-22 2 views
0

Я пытаюсь отправить POSTRequest на мой сервер, который возвращает JSONObject, однако он требует параметры в этой длинной форме строки:Добавить параметры для запроса

client_id = client_id & client_secret = client_secret & grant_type = пароль & имя пользователя = username & пароль = password

Я пытался выяснить, как сделать это, однако каждый учебник или swer, подобный этому, использует обесценившийся HTTPClient и т. д. Может ли кто-нибудь указать мне в правильном направлении?

ответ

1

HttpClient был depricated, поскольку уровень API 22

использования HttpURLConnection вместо этого, примеры являются here. Вы также можете прочитать это post, чтобы узнать больше.

Я бы рекомендовал использовать Retrofit, как это делает управление JSON запросы в POJOs проще.

+1

Как я уже сказал в своем вопросе, Android Studio (и другие источники) говорят мне, что HttpClient и HttpPost обесцениваются. Они лгут? –

+0

@MatthewSteinhardt жаль, что я прочитал вопрос не так. Проверить на правильность –

+0

ошибка с моей стороны: P извините. –

0

вы можете использовать этот код:

public JSONObject getJSONObject(String url, List<NameValuePair> parameters) { 

    HttpPost httpPost = new HttpPost(url); 
    /* httpPost.setHeader("Content-type", "application/json"); 
    httpPost.setHeader("Accept", "application/json");*/ 
    httpPost.addHeader("api_key", mContext.getResources().getString(R.string.api_key)); 
    HttpResponse response = null; 
    try { 
     httpPost.setEntity(new UrlEncodedFormEntity(parameters)); 
     response = mHttpClient.execute(httpPost); 
     HttpEntity entity = response.getEntity(); 
     String jsonResponse = EntityUtils.toString(entity); 
     for (NameValuePair params : parameters) { 
      Log.d("params:", params.toString()); 
     } 
     Log.d("url:", url); 
     Log.d("EntityUtils", jsonResponse); 
     JSONObject jsonObject = new JSONObject(jsonResponse); 
     return jsonObject; 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return null; 

} 

и называем это maethod нравится:

public String setCricketInfo(String userId, String role, String battingStyle) { 
    List<NameValuePair> parameters = new ArrayList<NameValuePair>(); 
    parameters.add(new BasicNameValuePair(mContext.getString(R.string.role_json), role)); 
    JSONObject jsonObject = this.getJSONObject(BASE_URL, parameters); 
    try { 
     return jsonObject.toString(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

Теперь возможность отправлять requist на пульте дистанционного управления и получить в качестве Json товару наслаждаться код :)

0

Попробуйте это

List<NameValuePair> params = new ArrayList<>(); 
params.add("client_id", client_id); 
params.add("client_secret", client_secret); 
params.add("grant_type", password); 
params.add("username", username); 
params.add("password", password); 

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, "http://server.com", URLEncodedUtils.format(params, "utf-8"), handler, handler); 
Смежные вопросы