2014-06-10 3 views
6

URL API에 액세스 할 때 "예기치 않은 응답 코드 500"문제가 발생했습니다.예기치 않은 응답 코드 500 URL API Android 앱

발리 도서관이 내 코드 :

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,이 반응하는 경우, 내가 액세스 할 수 있지만 나는 내 코드에 넣으면, 내가 오류를 500

NB 얻을 : URL이 유일한 IP 주소를이 IP 주소의 원인 내 VPS 서버와 아직 도메인 내 서버를 설정 아니에요 ...

어떻게 고칠 수 있습니까? 내 영어로 미안해.

+0

브라우저에 의해 귀하의 휴대 전화의 브라우저를 뜻 :

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( 

및 오류 청취자의

? – Byron

+0

예, 브라우저 브라우저에서 테스트했습니다. – bukanamay

+0

@bukanamay 문제가 해결 되었습니까? 두 번째 질문 :이 머리말이 필요한가요? –

답변

5

이것은 라이브러리 문제가 아니므로 브라우저는 일반적으로 헤더의 오류 500을 무시하고 내용을 표시하지만 발리는 그렇게하지 않으며 onErrorResponse를 호출합니다. 나는 이것이 서버 측 응용 프로그램 문제라고 생각하지만 onErrorResponse에서 응답을 얻을 수 있습니다. 자신을 설득하기 위해 RESTClient mozilla add를 추가하고 발리 요청을 보내고 응답을 볼 수 있습니다. 헤더에 오류 500 내부 서버 오류가 표시되지만 본문 섹션에서 응답을 볼 수 있습니다.

+0

네, 맞아요, ممنون –

+0

브라우저에서 작동하는 것을 볼 수 있습니다. 그러나 Volley에서 어떻게 처리해야합니까? –

+0

해결책을 얻지 못하는 문제가 발생했습니다. 동일한 서비스가 iOS에서 잘 작동합니다. – CrazyMind

1

다음은이 오류에 대한 해결책입니다. 첫째로이 같은 @Override protected Response parseNetworkResponse(NetworkResponse response) {Reponse 클래스를 확장하고 수정해야합니다

@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(); 
     }   
+0

누구에게나 도움이 되었습니까? – NovusMobile

관련 문제