2017-03-22 157 views
0

所以我试图通过Xserve连接到我们的数据库,当我试图访问令牌为用户。我正在使用正确的用户名和密码以及上下文类型和授予类型;我知道这是因为我已经通过googles postmaster扩展尝试了相同的POST方法。无论出于什么原因,当我在Android上尝试同样的事情时,至少我认为是相同的,它给了我一个400响应代码,并且不返回任何内容。HttpURLConnection - 响应代码:400(错误的请求)Android Studio - > xserve

下面是用于连接的代码:我还没有存储结果到的JSONObject但我会稍后使用

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

,但我预计一些类型的输出通过“Log.v ”。

有什么突出的?

+0

请分享您的邮递员请求和响应 – Ajinkya

+0

grant_type =密码 – Zachary

+0

对评论的抱歉我试图返回马车,这就是我想要在Android重新创建 – 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); 

     } 
    } 

这个工程,虽然我已经把它移到它自己的功能了。 更改输入类型为HashMap

相关问题