2017-03-08 6 views
1

그래서 오늘 안드로이드 앱에 로그인 기능을 구현하기 위해 iis rest service에서 post methode를 사용하려고했습니다. 이 휴식 서비스는 OAuth에 의해 보호되므로 내 주요 목표는 사용자 액세스 토큰을 얻는 것이 었습니다.발리와 함께 휴식 서비스를 사용하려하지만 응답 코드 400을 계속 제공합니다.

하지만 불행히도 내 methode는 400 오류를 반환 계속, 그래서 그것을 찾아 내 경우에는 작동하지 않았다 몇 가지 솔루션을 발견.

public boolean validateUser(final String username, final String password) 
{ 
    String url="not allowed to show the url here"; 
    final boolean[] validUser = {false}; 
    StringRequest jsonObjRequest = new StringRequest(Request.Method.POST, url, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 

        try { 
         JSONObject obj = new JSONObject(response); 
         //String token=obj.getString("token"); 
        } catch (JSONException e) { 
         System.out.println("couldn't parse string to jsonObject"); 
        } 

        Log.d("RESPONSE",response); 
       } 
      }, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d("volley", "Error: " + error.getMessage()); 
      error.printStackTrace(); 
     } 
    }) { 

     @Override 
     public String getBodyContentType() { 
      return "application/x-www-form-urlencoded"; //tried a couple of things like "application/json" and "application/x-www-form-urlencoded, encoding UTF-8" 
     } 

     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("username", username.trim()); 
      params.put("password", password.trim()); 
      params.put("grant_type", "password"); 
      return params; 
     } 

     /* @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      HashMap<String, String> headers = new HashMap<String, String>(); 
      headers.put("Content-Type", "application/json"); 
      return headers; 
     }*/ 
    }; 
    RequestQueue requestQueue= Volley.newRequestQueue(this); 

    requestQueue.add(jsonObjRequest); 
    requestQueue.start(); 

    //AppController.getInstance().addToRequestQueue(jsonObjRequest); 
    return validUser[0]; 
} 

및 오류 MSG 내가 점점 오전 :

E/발리 : 여기

는 Methode의 [176] BasicNetwork.performRequest : "에 대한 예기치 않은 응답 코드 (400)는 표시 할 수 없습니다 URL "

나는 어떤 도움이나 환호를 부탁드립니다!

+0

HTTP :/Heres는

String url="foo"; final RequestQueue queue = Volley.newRequestQueue(this); StringRequest postRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String response) { // response Log.d("Response", response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // error Log.d("Error.Response", "ERROR"); } } ) { @Override public String getBodyContentType() { return "application/x-www-form-urlencoded"; } @Override protected Map<String, String> getParams() { Map<String, String> params = new HashMap<String, String>(); params.put("username", "diplomarbeittest"); params.put("password", "iscool"); params.put("grant_type", "password"); return params; } }; queue.add(postRequest); 

owin에 로그인 저에서 GitHub의 예와는 당신이 필요로하는 모든이 LoginActivity에 나머지 URL을 삽입하는 것이다 (으) : 내가했던 것처럼 그들을 하드 코딩 구현하는 시도 /stackoverflow.com/questions/19671317/400-bad-request-http-error-code-meaning. "400은 요청이 잘못되었음을 의미합니다. 즉, 클라이언트가 서버로 보낸 데이터 스트림은 규칙을 따르지 않았습니다." - URL을 확인하고 비밀번호/사용자 이름이 올바른지 확인하십시오. – Zoe

+0

휴식 요청은 우편 배달부와 같은 다른 클라이언트에서 작동합니까? – Klevi01

+0

예 우편 배달부에서 작동합니다. 동일한 인코딩/매개 변수를 사용합니다. –

답변

1

오류 코드는 아마도 사용자 이름과 암호 조합이 맞지 않는다는 것을 의미합니다. click me