Reputation: 551
I already tried some example about send post from JsonArrayRequest volley to server, but it's not working and no have error in log..
so when I call a post in server the post can't get and my data when not call post is show, but now when call post, the data not show
this the code
public void JSON_DATA_WEB_CALL() {
CustomJsonArrayRequest request = new CustomJsonArrayRequest (GET_JSON_DATA_HTTP_URL,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
JSON_PARSE_DATA_AFTER_WEBCALL(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String, String> params = new HashMap<String, String>();
params.put("name", "value");
return params;
}
};
requestQueue = Volley.newRequestQueue(this);
requestQueue.add(request);
}
and this the code for new class
public class CustomJsonArrayRequest extends JsonRequest<JSONArray> {
public CustomJsonArrayRequest(String url, Response.Listener<JSONArray> listener, Response.ErrorListener errorListener) {
super(Method.POST, url, null, listener, errorListener);
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String, String> params = new HashMap<String, String>();
params.put("name", "value");
return params;
}
@Override
protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString =
new String(response.data, HttpHeaderParser.parseCharset(response.headers));
return Response.success(new JSONArray(jsonString),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JSONException je) {
return Response.error(new ParseError(je));
}
}
}
after webcall
public void JSON_PARSE_DATA_AFTER_WEBCALL(JSONArray array){
for(int i = 0; i<array.length(); i++) {
GetDataAdapterRiwayat GetDataAdapter2 = new GetDataAdapterRiwayat();
JSONObject json = null;
try {
json = array.getJSONObject(i);
GetDataAdapter2.setIdJalanRiwayat(json.getString(JSON_ID_JALAN));
GetDataAdapter2.setNamaJalanRiwayat(json.getString(JSON_NAMA_JALAN));
GetDataAdapter2.setLatitudeRiwayat(json.getString(JSON_LATITUDE));
GetDataAdapter2.setLongitudeRiwayat(json.getString(JSON_LONGITUDE));
GetDataAdapter2.setFotoSebelumRiwayat(json.getString(JSON_FOTO_SEBELUM));
GetDataAdapter2.setFotoSetelahRiwayat(json.getString(JSON_FOTO_SETELAH));
GetDataAdapter2.setIdRiwayat(json.getString(JSON_ID_RIWAYAT));
} catch (JSONException e) {
e.printStackTrace();
}
GetDataAdapter1.add(GetDataAdapter2);
}
recyclerViewadapterRiwayat = new RecyclerViewAdapterRiwayat(GetDataAdapter1, this);
recyclerView.setAdapter(recyclerViewadapterRiwayat);
}
Upvotes: 1
Views: 261
Reputation: 551
just use GET
if POST
still not working
example
CustomJsonArrayRequest request = new CustomJsonArrayRequest (GET_JSON_DATA_HTTP_URL + "?&name=value",
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
JSON_PARSE_DATA_AFTER_WEBCALL(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
and change in class CustomJsonArrayRequest
super(Method.POST, url, null, listener, errorListener);
with
super(Method.GET, url, null, listener, errorListener);
Upvotes: 1
Reputation: 4570
Try this way
public void JSON_DATA_WEB_CALL() {
Map<String, Object> jsonParams = new HashMap<>();
jsonParams.put("name", "value");
JsonObjectRequest postRequest = new JsonObjectRequest(Request.Method.POST, GET_JSON_DATA_HTTP_URL,
new JSONObject(jsonParams),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.e("Res", response.toString());
// Do your stuff here
JSON_PARSE_DATA_AFTER_WEBCALL(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// Handle Error
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json; charset=utf-8");
headers.put("User-agent", System.getProperty("http.agent"));
return headers;
}
};
queue.add(postRequest);
}
public void JSON_PARSE_DATA_AFTER_WEBCALL(String response) {
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
GetDataAdapterRiwayat GetDataAdapter2 = new GetDataAdapterRiwayat();
JSONObject json = null;
try {
json = jsonArray.getJSONObject(i);
GetDataAdapter2.setIdJalanRiwayat(json.getString(JSON_ID_JALAN));
GetDataAdapter2.setNamaJalanRiwayat(json.getString(JSON_NAMA_JALAN));
GetDataAdapter2.setLatitudeRiwayat(json.getString(JSON_LATITUDE));
GetDataAdapter2.setLongitudeRiwayat(json.getString(JSON_LONGITUDE));
GetDataAdapter2.setFotoSebelumRiwayat(json.getString(JSON_FOTO_SEBELUM));
GetDataAdapter2.setFotoSetelahRiwayat(json.getString(JSON_FOTO_SETELAH));
GetDataAdapter2.setIdRiwayat(json.getString(JSON_ID_RIWAYAT));
} catch (JSONException e) {
e.printStackTrace();
}
GetDataAdapter1.add(GetDataAdapter2);
}
recyclerViewadapterRiwayat = new RecyclerViewAdapterRiwayat(GetDataAdapter1, this);
recyclerView.setAdapter(recyclerViewadapterRiwayat);
} catch (Exception ex) {
ex.printStackTrace();
}
}
Edited Answer
public void JSON_DATA_WEB_CALL() {
String GET_JSON_DATA_HTTP_URL = "http://jalanrusak.16mb.com/AndroidFileUpload/GetDataRiwayat.php";
Map<String, Object> jsonParams = new HashMap<>();
jsonParams.put("name", "value");
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
JsonArrayRequest postRequest= new JsonArrayRequest(GET_JSON_DATA_HTTP_URL, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.e("Res", response.toString());
JSON_PARSE_DATA_AFTER_WEBCALL(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// Handle Error
Log.e("Res", error.toString());
}
});
queue.add(postRequest);
}
public void JSON_PARSE_DATA_AFTER_WEBCALL(String response) {
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
GetDataAdapterRiwayat GetDataAdapter2 = new GetDataAdapterRiwayat();
JSONObject json = null;
try {
json = jsonArray.getJSONObject(i);
GetDataAdapter2.setIdJalanRiwayat(json.getString(JSON_ID_JALAN));
GetDataAdapter2.setNamaJalanRiwayat(json.getString(JSON_NAMA_JALAN));
GetDataAdapter2.setLatitudeRiwayat(json.getString(JSON_LATITUDE));
GetDataAdapter2.setLongitudeRiwayat(json.getString(JSON_LONGITUDE));
GetDataAdapter2.setFotoSebelumRiwayat(json.getString(JSON_FOTO_SEBELUM));
GetDataAdapter2.setFotoSetelahRiwayat(json.getString(JSON_FOTO_SETELAH));
GetDataAdapter2.setIdRiwayat(json.getString(JSON_ID_RIWAYAT));
} catch (JSONException e) {
e.printStackTrace();
}
GetDataAdapter1.add(GetDataAdapter2);
}
recyclerViewadapterRiwayat = new RecyclerViewAdapterRiwayat(GetDataAdapter1, this);
recyclerView.setAdapter(recyclerViewadapterRiwayat);
} catch (Exception ex) {
ex.printStackTrace();
}
}
Upvotes: 0
Reputation: 75
use this:
public class BaseRequest extends Request<JSONArray> {
private static final String TAG = BaseRequest.class.getSimpleName();
private final Gson gson = new Gson();
private final Response.Listener listener;
public BaseRequest(String url, Response.Listener responseListener, Response.ErrorListener listener) {
super(Request.Method.GET, url, listener);
Log.e(TAG, "Requesting url : " + url);
this.listener = responseListener;
}
public BaseRequest(int method, String url, Response.Listener responseListener, Response.ErrorListener listener) {
super(method, url, listener);
Log.e(TAG, "Requesting url : " + url);
this.listener = responseListener;
}
@Override
public Response<JSONArray> parseNetworkResponse(NetworkResponse response) {
try {
String json = null;
json = new String(
response.data,
HttpHeaderParser.parseCharset(response.headers));
JSONArray result = new JSONArray(json);
return Response.success(
result,
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JsonSyntaxException e) {
return Response.error(new ParseError(e));
e.pri
} catch (JSONException e) {
return Response.error(new ParseError(e));
}
}
@Override
protected VolleyError parseNetworkError(VolleyError volleyError) {
return volleyError;
}
@Override
protected void deliverResponse(JSONArray response) {
listener.onResponse(response);
}
}
and make request:
BaseRequest baseRequest = new BaseRequest(Request.Method.POST, url, new Response.Listener() {
@Override
public void onResponse(JSONArray response) {
//Response as JsonArray
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Error : " + error.getMessage());
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
//Your parameters
return params;
}
};
queue.add(baseRequest);
Upvotes: 0