Я хочу отправить некоторые данные на сервер, и у данных есть некоторые параметры, и у них есть большой текст JSON. Я пытаюсь использовать Volley для отправки этих данных.
Функция getParams() почему-то никогда не вызывается.
Вот мой код:
final StringRequest stringReq = new StringRequest(Request.Method.POST, API_URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (Util.IS_DEBUG_LOGGABLE) {
Log.d(TAG, "onResponse: Sent Data");
}
Toast.makeText(getContext(), R.string.config_changed, Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (Util.IS_DEBUG_LOGGABLE) {
Log.d(TAG, "onErrorResponse: Data Not Sent Because server could not verify");
}
Toast.makeText(getContext(), getString(R.string.msg_data_not_sent, error), Toast.LENGTH_SHORT).show();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> pars = new HashMap<>();
if (Util.IS_DEBUG_LOGGABLE) {
Log.d(TAG, "getParams: Called");
}
pars.put(PARAM1, "testf18");
pars.put(PARAM2, "Save");
return pars;
}
@Override
public byte[] getBody() throws AuthFailureError {
try {
if (Util.IS_DEBUG_LOGGABLE) {
Log.d(TAG, "getBody: Called");
}
return response.toString().getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", response.toString(), "utf-8");
return null;
}
}
};
RequestHelperClass.addToRequestQueue(stringReq, getContext());
Пожалуйста помоги.
Запрос обращается к сервлету, который работает в Google App Engine, и я вижу запрос там, и он говорит, что Param1 и Param2 равны нулю.
проверьте, правильны ли ключи - PARAM1, PARAM1 и совпадает с тем, что ожидает ваш бэкэнд, если это не сработало, поделитесь своим URL-адресом api
Да, они правы. Функция getParams() не вызывается
поделитесь своим URL-адресом API, ключами параметров
Я исправил проблему, используя HttpUrlConnection вместо Volley.
Вы проверяли запрос через почтальона?