2016-05-23 50 views
0

我使用凌空發送web服務請求和凌空迴應是服務器錯誤(此網站需要啓用java腳本)。我嘗試了POST和GET方法。 在這個問題上,我發現這兩個問題的一些搜索後.. Volley Server error (Requires javascript?) Android Development but there is no answer to solve this issue in 2 months排氣服務器錯誤本網站需要啓用java腳本

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

沒有更多的問題和解決方案中。任何人都可以告訴這個問題的確切問題和解決方案。 這裏是我的代碼

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

和Web服務代碼是

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

什麼是你發送請求到現場? – zgc7009

+0

我正在使用免費的託管網站.. Base.pk – user3001551

+0

我認爲如果你點擊一個需要JavaScript的網頁,它會遇到這個錯誤,但你不應該像這樣的要求這樣的網站,這就是爲什麼我是想知道。您是否試圖創建旨在爲用戶提供UI或任何內容的網址? – zgc7009

回答

0

我碰到這個錯誤最近來了!您的代碼完全正常,但問題在於您的虛擬主機。 (它是由多少)? 它有一個不會讓你的Android凌空請求進入的bot探測器運行。不幸的是,這不能被禁用/關閉。 嘗試更改您的虛擬主機服務。 希望這可以幫助☺

0

有一個很好的解決方法建議this答案。

在Volley中,您可以覆蓋getHeaders()方法以發送包含HTTP請求的Cookie。

代碼:

@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; 
}