2017-03-22 8 views
0

Also versuche ich über Xserve eine Verbindung zu unserer Datenbank herzustellen, AT versuche gerade auf das Token für den Benutzer zuzugreifen. Ich verwende den korrekten Benutzernamen und das Passwort zusammen mit dem Kontexttyp und dem Grant-Typ. Ich weiß das, weil ich die gleiche POST-Methode über googles postmaster extension versucht habe. Aus welchem ​​Grund auch immer, wenn ich dasselbe auf Android versuche, zumindest was ich denke, ist dasselbe, es gibt mir einen Antwortcode 400 und gibt nichts zurück.HttpURLConnection - Response-Code: 400 (ungültige Anfrage) Android Studio -> xserve

Hier ist der Code verwendet zu verbinden:

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

ich das Ergebnis in die JSONObject noch nicht gespeichert haben, wie ich später verwenden werden, aber ich erwartete eine Art von Ausgabe über die „Log.v ".

Gibt es etwas, das auffällt?

+0

bitte Ihre Postbote Anfrage & reponse – Ajinkya

+0

grant_type = Passwort – Zachary

+0

traurig über die Kommentare teile ich versuchte Wagen zurückzukehren, ist, was ich versuche, in Android zu erstellen – Zachary

Antwort

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

     } 
    } 

das funktioniert, obwohl ich es jetzt zu seiner eigenen Funktion verschoben habe. den Eingangstyp auf eine HashMap geändert

Verwandte Themen