2017-03-22 25 views
0

그래서 Xserve를 통해 데이터베이스에 연결하려고합니다. 사용자의 토큰에 액세스하려고합니다. 컨텍스트 유형 및 부여 유형과 함께 올바른 사용자 이름 및 비밀번호를 사용하고 있습니다. 나는 이것을 알고있다. 왜냐하면 나는 googles postmaster extension을 통해 같은 POST 방법을 시도했기 때문이다. 어떤 이유로 든 안드로이드에서 똑같은 것을 시도 할 때, 적어도 똑같은 것으로 생각하면, 그것은 나에게 400 응답 코드를 주며 아무 것도 반환하지 않습니다. 여기 HttpURLConnection - 응답 코드 : 400 (잘못된 요청) Android Studio -> xserve

를 연결하는 데 사용되는 코드입니다 :

private HttpURLConnection urlConnection; 

@Override 
    protected Boolean doInBackground(Void... params) { 
     Boolean blnResult = false; 
     StringBuilder result = new StringBuilder(); 
     JSONObject passing = new JSONObject(); 

     try { 
      URL url = new URL("http://xserve.uopnet.plymouth.ac.uk/modules/INTPROJ/PRCS251M/token"); 

      // set up connection 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      urlConnection.setDoInput(true); 
      urlConnection.setDoOutput(true); 
      urlConnection.addRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 
      urlConnection.setRequestMethod("POST"); 
      urlConnection.connect(); 

      // set up parameters to pass 
      passing.put("username", mEmail); 
      passing.put("password", mPassword); 
      passing.put("grant_type", "password"); 

      // add parameters to connection 
      OutputStreamWriter wr= new OutputStreamWriter(urlConnection.getOutputStream()); 
      wr.write(passing.toString()); 


      // If request was good 
      if (urlConnection.getResponseCode() == 200) { 
       blnResult = true; 
       BufferedReader reader = new BufferedReader(
         new InputStreamReader(urlConnection.getInputStream())); 
       String line; 

       while ((line = reader.readLine()) != null) { 
        result.append(line); 
       } 
       reader.close(); 
      } 

      //JSONObject json = new JSONObject(builder.toString()); 
      Log.v("Response Code", String.format("%d", urlConnection.getResponseCode())); 
      Log.v("Returned String", result.toString()); 

     }catch(Exception e) { 
      e.printStackTrace(); 
     } 
     finally { 
      urlConnection.disconnect(); 
     } 

     return blnResult; 
    } 

내가 나중에 사용할 수 있습니다로 아직 된 JSONObject에 결과를 저장하지 않은,하지만 난 "Log.v를 통해 출력의 어떤 기대 ".

눈에 띄는 것이 있습니까?

+0

당신의 우편 배달부 요청 및 reponse – Ajinkya

+0

grant_type = 내가 마차를 반환하려고 코멘트 미안 비밀번호 – Zachary

+0

를 공유하시기 바랍니다는 HashMap에 입력 유형을 변경, 그게 내가 안드로이드에 재현하기 위해 노력하고있어 무엇 – Zachary

답변

1
try { 
     URL url = new URL("http://xserve.uopnet.plymouth.ac.uk/modules/INTPROJ/PRCS251M/token"); 

     parameters = new HashMap<>(); 
     parameters.put("username", mEmail); 
     parameters.put("password", mPassword); 
     parameters.put("grant_type", "password"); 

     set = parameters.entrySet(); 
     i = set.iterator(); 
     postData = new StringBuilder(); 

     for (Map.Entry<String, String> param : parameters.entrySet()) { 
      if (postData.length() != 0) { 
       postData.append('&'); 
      } 

      postData.append(URLEncoder.encode(param.getKey(), "UTF-8")); 
      postData.append('='); 
      postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8")); 
     } 

     postDataBytes = postData.toString().getBytes("UTF-8"); 

     // set up connection 
     urlConnection = (HttpURLConnection) url.openConnection(); 
     urlConnection.setDoInput(true); 
     urlConnection.setDoOutput(true); 
     urlConnection.setConnectTimeout(5000); 
     urlConnection.setReadTimeout(5000); 
     urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); 
     urlConnection.setRequestMethod("POST"); 
     urlConnection.getOutputStream().write(postDataBytes); 

     // If request was good 
     if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) { 
      reader = new BufferedReader(
        new InputStreamReader(urlConnection.getInputStream())); 
      String line; 

      while ((line = reader.readLine()) != null) { 
       result.append(line); 
      } 
      reader.close(); 
     } 

     Log.v("Login Response Code", String.valueOf(urlConnection.getResponseCode())); 
     Log.v("Login Response Message", String.valueOf(urlConnection.getResponseMessage())); 
     Log.v("Login Returned String", result.toString()); 


     jsonObject = new JSONObject(result.toString()); 
     token = jsonObject.getString("access_token"); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     urlConnection.disconnect(); 
     if (token != null) { 
      jsonObject = driverInfo(token); 

     } 
    } 

이 기능은 이제 자체 기능으로 이전했지만 작동합니다. 이