2016-07-18 7 views
2

Ich rufe Web-Service durch Volley. In diesem Web-Service sende ich drei Input-Parameter mit Json-Objekt. aber als Antwort erhalte ich HTML-Antwort. und es gibt mir einen Fehler. Wie bekomme ich HTML Antwort in onResponse Methode? Gibt es eine Lösung, um dieses Problem zu lösen?Wie HTML-Antwort erhalten durch Volley

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); 

    } 

Ich erhalte diesen Fehler

Log cat error

diese Antwort i in diesem WebService bin immer:

<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> 
+0

Was ist der Fehler, den Sie bekommen? – Sujewan

+1

möchten Sie einige Codeinformationen in Ihre Frage einfügen? –

+0

logcat und zugehörigen Code hinzufügen? –

Antwort

2

Dies ist ein Code für das Erhalten Antwort wäre Volley

mit
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); 

Weitere Details: Gehen Sie durch dieses link

1

denke ich Ihre Antwort vom Server in html Format ist .. um die html Antwort in java gibt es einige Möglichkeiten, aber ich persönlich mag JSOUP Sie können auch zu analysieren siehe Links this und this

Zuerst in Ihrer gradle Datei

compile 'org.jsoup:jsoup:1.8.3' // new version is available i think.. 

Dann die Abhängigkeit hinzufügen Parse t Er html Attribute wie zum Beispiel.

Document doc = JSoup.parse(response); 
String id = doc.select("input[name=id]").attr("value"); 

this helps ..

0

ich lösen dieses Problem, indem HTML-Antwort in JSON-Objekt in Schlüsselwertpaar hinzuzufügen. Jetzt hole ich HTML-Antwort über JSON-Objekt.

+0

Großartige Lösung übrigens :) :) – Sanoop