Непредвиденный код ответа.

У меня возникает проблема «Неожиданный код ответа 500», когда я получаю URL API.

Этот мой код с библиотекой волейбола:

String url= "http://103.241.24.35/android/android_login_api/index.php"; public void detailURL(String url) { Log.v("Android Spinner JSON Data Activity", url); queue = Volley.newRequestQueue(this); StringRequest sr = new StringRequest(Request.Method.POST,url, new Response.Listener<String>() { @Override public void onResponse(String response) { ProgressLoadStartLogin.setVisibility(View.GONE); displaystatis_kontenDetail(response); btn_enable(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { if( error instanceof NetworkError) { } else if( error instanceof ServerError) { } else if( error instanceof AuthFailureError) { } else if( error instanceof ParseError) { } else if( error instanceof NoConnectionError) { } else if( error instanceof TimeoutError) { } statusKoneksi(); btn_enable(); ProgressLoadStartLogin.setVisibility(View.GONE); } }){ @Override protected Map<String,String> getParams(){ Map<String,String> params = new HashMap<String, String>(); params.put("tag",Variabel.login_tag); params.put("username",user); params.put("password", password); params.put("idgcm",GCMid); return params; } @Override public Map<String, String> getHeaders() throws AuthFailureError { Map<String,String> params = new HashMap<String, String>(); params.put("Content-Type","application/x-www-form-urlencoded"); return params; } }; queue.add(sr); } 

И я разрешил Интернет на мой манифест.

Если URL-адрес я копирую в браузере, это ответ, я могу получить доступ, но если я вложу свой код, я получу Error 500.

NB : URL-адрес этого только IP-адреса, потому что это IP-адрес моего VPS-сервера, и я еще не настроил домен моего сервера …

Как я могу это исправить? Извините за мой английский.

Solutions Collecting From Web of "Непредвиденный код ответа."

Это не проблема с вашей библиотекой, браузеры обычно игнорируют ошибку 500 в заголовках и отображают контент, но дозатор не делает этого и вызывает onErrorResponse. Я думаю, что это проблема на стороне сервера, но вы можете получить ответ в onErrorResponse. Чтобы убедить себя, вы можете добавить RESTClient mozilla добавить и отправить свой запрос на залп и посмотреть ответ. В заголовке он показывает ошибку ошибки внутреннего сервера 500, но вы можете увидеть ответ в разделе тела

Вот решение этой ошибки. Во-первых, вам необходимо расширить класс Reponse и изменить @Override protected Response parseNetworkResponse(NetworkResponse response) { например:

 public class CustomRequest extends Request { public CustomRequest(int method, String url, ErrorListener listener) { super(method, url, listener); // TODO Auto-generated constructor stub } @Override protected Response parseNetworkResponse(NetworkResponse response) { System.out.println(response.statusCode); try { Log.d("custom response", "[raw json]: " + (new String(response.data))); Gson gson = new Gson(); String json = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success(response.data, HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JsonSyntaxException e) { return Response.error(new ParseError(e)); } } @Override protected void deliverResponse(Object arg0) { // TODO Auto-generated method stub } } //-------------------------------------- //to make request to server we need to use our custom Request like this : JsonObjectRequest mJsonObjectRequest = new JsonObjectRequest( CustomRequest.Method.POST, url, obj, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { ; try { Toast.makeText( 

И при прослушивании ошибок:

 @Override public void onErrorResponse(VolleyError arg0) { Log.e("erro;r", "error"); if(arg0.networkResponse.statusCode==500){ Log.e("error", "" + new String(arg0.networkResponse.data)); try { JSONObject obj = new JSONObject(new String(arg0.networkResponse.data)); int codeErreur = obj.getInt("code_erreur"); if (codeErreur == 501) { Drawable warning = (Drawable) MonEntretienApplication.getInstance().getResources().getDrawable(R.drawable.warning_red); warning.setBounds(new Rect(0, 0, warning.getIntrinsicWidth(), warning.getIntrinsicHeight())); email.setError("",warning); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); }