Reputation: 1291
I am calling web service through volley. In that web service i am sending three input parameters using json object. but in response i am receiving html response. and it gives me error. how to get html response in onResponse method? is there any solution to solve this problem?
private void callWebServiceToGetDetails(final String uID, final String oID, final String sToken) {
// initialize the progress dialog and show it
// Showing progress dialog
final ProgressDialog progressDialog = new ProgressDialog(HistoryScreenActivity.this, R.style.ProgressBarTansparent);
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(false);
progressDialog.show();
progressDialog.setContentView(R.layout.custom_progressbar_layout);
String url = WebServices.GET_DETAILS_WEB_SERVICE;
JSONObject jsonObjectChield = new JSONObject();
try {
jsonObjectChield.put("PUID", uID);
jsonObjectChield.put("POID", oID);
jsonObjectChield.put("POPF", "html");
} catch (JSONException e) {
e.printStackTrace();
}
String jsonString = jsonObjectChield.toString();
Log.d("Params","" + jsonString);
final JsonObjectRequest postRequest = new JsonObjectRequest(Request.Method.POST, url, jsonObjectChield, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
writeToFile(response.toString());
webViewHistoryDetails.setVisibility(View.VISIBLE);
File file = new File("" + path);
webViewHistoryDetails.loadUrl("file:///" + file + "/report.html");
progressDialog.dismiss();
}
}
// Request a string response from the provided URL.
, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// Handle your error types accordingly.For Timeout & No connection error, you can show 'retry' button.
// For AuthFailure, you can re login with user credentials.
// In this case you can check how client is forming the api and debug accordingly.
// For ServerError 5xx, you can do retry or handle accordingly.
if (error instanceof NetworkError) {
Toast.makeText(HistoryScreenActivity.this, "No internet connection", Toast.LENGTH_SHORT).show();
} else if (error instanceof ServerError) {
Toast.makeText(HistoryScreenActivity.this, "Our server is busy please try again later", Toast.LENGTH_SHORT).show();
} else if (error instanceof AuthFailureError) {
Toast.makeText(HistoryScreenActivity.this, "AuthFailure Error please try again later", Toast.LENGTH_SHORT).show();
} else if (error instanceof ParseError) {
Toast.makeText(HistoryScreenActivity.this, "Parse Error please try again later", Toast.LENGTH_SHORT).show();
} else if (error instanceof NoConnectionError) {
Toast.makeText(HistoryScreenActivity.this, "No connection", Toast.LENGTH_SHORT).show();
} else if (error instanceof TimeoutError) {
Toast.makeText(HistoryScreenActivity.this, "Server time out please try again later", Toast.LENGTH_SHORT).show();
}
error.printStackTrace();
progressDialog.dismiss();
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
// headers.put("Authorization", "Basic c2NvdHQ6dGlnZXI=");
headers.put("token-id", sToken);
String creds = String.format("%s:%s", "scott", "tiger");
String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.DEFAULT);
headers.put("Authorization", auth);
Log.d("SToken",sToken);
// String creds = String.format("%s:%s", "scott", "tiger");
// String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.DEFAULT);
// headers.put("Authorization", auth);
return headers;
}
};
Volley.newRequestQueue(HistoryScreenActivity.this).add(postRequest);
}
i am getting this error
this is response i am getting in this webservice:
<html>
<head>
<title>Order Details</title>
<style>
body
table td{
font-family: "Roboto Condensed", sans-serif;
color: #656565;
font-size: 14px;
}
</style>
</head>
<body>
<table style="width:100%; cellpadding:0; cellspacing:1;">
<tr style="background:#CDDDF7;">
<td style="text-align:center; padding:20px; font-weight:bold; font-size:22px;">Order</td>
</tr>
<tr>
<td>
<table cellpadding="6" style="width:100%; cellpadding:0; cellspacing:1; background:#F7F7FF; border:1px solid #BEC0CC; border-radius:3px 3px 0px 0px; padding-bottom:15px;">
<tbody>
<tr style="padding-bottom:10px; background-color:#ccc;">
<td style="background-color:F7F7FF; width:20%; font-weight:bold;">
Order Number
</td>
<td style="background-color:F7F7FF; width:30%;">
67
</td>
<td style="background-color:F7F7FF; width:20%; font-weight:bold;">
Order Date
</td>
<td style="background-color:F7F7FF; width:30%;">
2016-07-14
</td>
</tr>
<tr>
<td style="background-color:F7F7FF; width:20%; font-weight:bold;">
Customer Name
</td>
<td style="background-color:F7F7FF; width:30%;">
Optim India
</td>
<td style="background-color:F7F7FF; width:20%; font-weight:bold;">
Cook Name
</td>
<td style="background-color:F7F7FF; width:30%;">
Kuldeep Sonawane
</td>
</tr>
<tr>
<td style="background-color:F7F7FF; width:20%; font-weight:bold;">
Customer Email
</td>
<td style="background-color:F7F7FF; width:30%;">
***[email protected]
</td>
<td style="background-color:F7F7FF; width:20%; font-weight:bold;">
Cook Email
</td>
<td style="background-color:F7F7FF; width:30%;">
***[email protected]
</td>
</tr>
<tr>
<td style="background-color:F7F7FF; width:20%; font-weight:bold;">
Customer Contact Number
</td>
<td style="background-color:F7F7FF; width:30%; vertical-align:top;">
9876******
</td>
<td style="background-color:F7F7FF; width:20%; font-weight:bold; vertical-align:top;">
cook Contact Number
</td>
<td style="background-color:F7F7FF; width:30%; vertical-align:top;">
9658******
</td>
</tr>
<tr>
<td style="background-color:F7F7FF; width:20%; font-weight:bold; vertical-align:top;">
order status
</td>
<td style="background-color:F7F7FF; width:30%;">
Accepted
</td>
<td style="background-color:F7F7FF; width:20%; font-weight:bold; vertical-align:top;">
Delivery Address
</td>
<td style="background-color:F7F7FF; width:30%; vertical-align:top;">
clg rd, city - Carlsbad, state - California, country - United States, zip code - 422008
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellpadding="4" cellspacing="0" style="width:100%; background:#F7F7FF; border:1px solid #BEC0CC; border-top:0!important; border-radius:0 0 3px 3px;">
<tbody>
<tr style="font-weight:bold;background-color:#CDDDF7;">
<td>
Sr.
</td>
<td >
Dish Name
</td>
<td style="text-align:right;">
Quantity
</td>
<td style="text-align:right;">
Rate
</td>
<td style="text-align:right;">
Discount
</td>
<td style="text-align:right;">
Amount
</td>
</tr><tr style="background-color:#fff;">
<td style="text-align:center;">
1
</td>
<td>
Chicken Tikka Masala
</td>
<td style="text-align:right;">
4
</td>
<td style="text-align:right;">
25000
</td>
<td style="text-align:right;">
0
</td>
<td style="text-align:right;">
100000
</td>
</tr><tr style="background-color:#fff;">
<td style="border-top:1px solid #ccc;" colspan="4"></td>
<td style="border-top:1px solid #ccc;">
<b>Sub Total</b>
</td>
<td style="border-top:1px solid #ccc; text-align:right;">
100000
</td>
</tr>
<tr>
<td style="border-top:1px solid #ccc;" colspan="4"></td>
<td style="background-color:F7F7FF; font-weight:bold;border-top:1px solid #ccc;">
<b>Total</b>
</td>
<td style="background-color:F7F7FF; font-weight:bold; border-top:1px solid #ccc; text-align:right;">
100000
</td>
</tr>
<tr>
<td style="border-top:1px solid #ccc;" colspan="4"></td>
<td style="background-color:F7F7FF; font-weight:bold;border-top:1px solid #ccc;">
<b>Total Discount</b>
</td>
<td style="background-color:F7F7FF; font-weight:bold; border-top:1px solid #ccc; text-align:right;">
0
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</body>
</html>
Upvotes: 3
Views: 4351
Reputation: 1291
I solve this issue by adding html response in json object in key value pair. now i fetch html response through json object.
Upvotes: 0
Reputation: 3486
I think your response from your server is in html
format.. in order to parse the html
response in java
there are some ways, But i personally like JSOUP you can also refer links this and this
First in your gradle
file add the dependency
compile 'org.jsoup:jsoup:1.8.3' // new version is available i think..
Then parse the html
attributes like for example.
Document doc = JSoup.parse(response);
String id = doc.select("input[name=id]").attr("value");
Hope this helps..
Upvotes: 3
Reputation: 1023
This would be a code for Getting response using Volley
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
}
});
// Adding request to request queue
AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);
For more details: Go through this link
Upvotes: 1