2016-05-23 1 views
0

J'utilise volley pour envoyer une requête de service web et la réponse de volley est SERVER ERROR (ce site requiert le script Java activé). J'ai essayé les méthodes POST et GET. Après quelques recherches sur cette question, je trouve ces deux questions .. Volley Server error (Requires javascript?) Android Development but there is no answer to solve this issue in 2 monthsVolley Erreur de serveur ce site requiert le script java enabled

Disable Javascript on volley StringRequest but there is no answer to solve this issue in 6 months

Plus de questions et de la solution trouvée. Quelqu'un peut-il dire le problème exact et la solution à ce problème. Voici mon code

public void postRequest(final JSONObject jsonParams,final Handler handler){ 
    StringRequest stringRequest = new StringRequest(Request.Method.POST, AppConstants.ADMIN_URL, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        Message message = handler.obtainMessage(); 
        message.obj = response; 
        handler.sendMessage(message); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Message message = handler.obtainMessage(); 
        message.obj = error.toString(); 
        Log.d("error",error.toString()); 
        handler.sendMessage(message); 
       } 
      }){ 
     @Override 
     protected Map<String,String> getParams(){ 
      Map<String,String> params = new HashMap<String, String>(); 

      Iterator<String> iter = jsonParams.keys(); 
      while (iter.hasNext()) { 
       try { 
        String key = iter.next(); 
        String value = jsonParams.get(key)+""; 
        params.put(key,value); 

       } catch (JSONException e) { 
        // Something went wrong! 
        Message message = handler.obtainMessage(); 
        message.obj = e.getMessage(); 
        handler.sendMessage(message); 
       } 
      } 
      return params; 
     } 

     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String,String> headers = new HashMap<String, String>(); 
      return headers; 
     } 
    }; 

    MyVolley.getInstance(context).getRequestQueue().add(stringRequest); 
} 

et le code de service Web est

<?php if(true) { echo 'request arrived'; } ?> 
+0

Quel est le site que vous envoyez à la demande? – zgc7009

+0

J'utilise un site d'hébergement gratuit .. Base.pk – user3001551

+0

Je pense que si vous frappez une page Web qui nécessite javascript, il va frapper cette erreur, mais vous ne devriez pas faire des demandes comme ça à des sites comme ça, c'est pourquoi j'étais je me demandais. Essayez-vous de frapper une URL qui est conçu pour fournir aux utilisateurs une interface utilisateur ou quoi que ce soit? – zgc7009

Répondre

0

je suis tombé sur cette erreur récemment! Votre code est totalement correct, mais le problème réside avec votre hébergeur. (Est-ce bythost)? Il a un détecteur de bot en cours d'exécution qui ne laisse pas entrer votre demande de vol Android. Malheureusement, cela ne peut pas être désactivé/désactivé. Essayez de changer votre service d'hébergement Web. Espérons que cela aide☺

0

Il existe une solution de contournement suggérée dans this answer.

Dans Volley, vous pouvez remplacer la méthode getHeaders() pour envoyer le cookie avec votre requête HTTP.

code:

@Override 
public Map<String, String> getHeaders() throws AuthFailureError { 
    Map<String, String> map = new HashMap<>(); 
    map.put("Cookie", "__test=YOUR COOKIE HERE; expires=Friday, January 1, 2038 at 5:25:55 AM; path=/"); 
    return map; 
}