2017-03-22 2 views
0

Donc j'essaye de me connecter à notre base de données via Xserve, AU moment où j'essaye d'accéder au jeton pour l'utilisateur. J'utilise le nom d'utilisateur et le mot de passe corrects avec le type de contexte et le type de subvention; Je le sais parce que j'ai essayé la même méthode POST via l'extension postmaster googles. Pour quelque raison que ce soit lorsque j'essaie la même chose sur Android, au moins ce que je pense est le même, il me donne un code de réponse de 400 et ne renvoie rien.HttpURLConnection - Code de Réponse: 400 (Mauvaise Demande) Android Studio -> xserve

Voici le code utilisé pour se connecter:

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

Je n'ai pas enregistré le résultat dans la JSONObject encore que je vais utiliser plus tard, mais je m'y attendais une sorte de sortie via le « Log.v ".

Y a-t-il quelque chose qui se démarque?

+0

s'il vous plaît partager votre demande postier & Reponse – Ajinkya

+0

grant_type = mot de passe – Zachary

+0

désolé les commentaires que j'ai essayé de revenir voiture, c'est ce que je suis en train de recréer dans Android – Zachary

Répondre

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

     } 
    } 

cela fonctionne, bien que je l'ai déplacé à sa propre fonction maintenant. a changé le type d'entrée à un HashMap