2013-11-22 46 views
0

我試圖創建新的用戶使用這個鏈接 http://docs.openstack.org/api/openstack-identity-service/2.0/content/POST_addUser_v2.0_users_Admin_API_Service_Developer_Operations-d1e1356.html採用Android

我已經通過了服務器的回覆,當我登錄令牌給出的API來的OpenStack添加新用戶,以梯形的OpenStack。 這是我創建新的用戶代碼:

Log.i("TAG","Adding new User"); 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://10.0.1.122:35357/v2.0/users"); 

     try { 
      JSONObject newuser = new JSONObject(); 
      JSONObject userInfo = new JSONObject();   
      newuser.put("user", userInfo); 

      //end of JsonArray       

      userInfo.put("username", "Lou Mary"); 
      userInfo.put("email", "[email protected]"); 
      userInfo.put("enabled", true); 
      userInfo.put("OS-KSADM:password", "secret101"); 

      Log.i("TAG", "passing your data"+newuser.toString()); 
      // erequest.setText(auth.toString()); 

      StringEntity params1 = new StringEntity(newuser.toJSONString()); 
      params1.setContentEncoding("UTF-8"); 
      //params1.setContentType("application/json"); 

       Log.i("TAG","params" +params1); 
      httppost.setHeader("Content-type", "application/json"); 
      httppost.setHeader("X-Auth-Token", "MIICbgYJKoZIhvcNAQcCoIICXzCCAlsCAQExCTAHBgUrDgMCGjCCAUcGCSqGSIb3DQEHAaCCATgEggE0eyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxMy0xMS0yMlQwMDo1NjoxMy42NDI2NjkiLCAiZXhwaXJlcyI6ICIyMDEzLTExLTIzVDAwOjU2OjEzWiIsICJpZCI6ICJwbGFjZWhvbGRlciJ9LCAic2VydmljZUNhdGFsb2ciOiBbXSwgInVzZXIiOiB7InVzZXJuYW1lIjogImFkbWluIiwgInJvbGVzX2xpbmtzIjogW10sICJpZCI6ICJjY2MwMjJkZGNhMzU0N2NiYmIxMmZmNTViNTZkOGI2OCIsICJyb2xlcyI6IFtdLCAibmFtZSI6ICJhZG1pbiJ9LCAibWV0YWRhdGEiOiB7ImlzX2FkbWluIjogMCwgInJvbGVzIjogW119fX0xgf8wgfwCAQEwXDBXMQswCQYDVQQGEwJVUzEOMAwGA1UECBMFVW5zZXQxDjAMBgNVBAcTBVVuc2V0MQ4wDAYDVQQKEwVVbnNldDEYMBYGA1UEAxMPd3d3LmV4YW1wbGUuY29tAgEBMAcGBSsOAwIaMA0GCSqGSIb3DQEBAQUABIGAqoSsewZ+ceYq1JXnu9OVvTJj+Aljm+rUio1biXow72iZ+MVBJKbKvlT4-2DFPC1PrCOErpX2jJ7HuiASSaBgAcROT+LmV3KNnHa+p9DCtgSBGRN7qHJpnQBXgs3tz4ZMVi3AB9i1mOmVHxeVKVfiQWt1zyis7OZPG-PZRq1DohQ="); 
      httppost.setEntity((params1)); 

      // Execute HTTP Post Request 
      Log.i("TAG", "pushing your data"); 
      HttpResponse response = httpclient.execute(httppost); 
      Log.i("TAG", "Sucessful " + response.getParams()); 


      BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); 
      String jsonresponse = reader.readLine(); 
      JSONTokener tokener = new JSONTokener(jsonresponse); 
      try { 
       JSONArray finalResult = new JSONArray(tokener); 

        Log.i("TAG", "Sucessfully communicated on server"); 

      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 


     }catch (IOException e) {   

      Log.e("", "IOException " + e.toString()); 
      Log.i("", "The server refused again! "); 
      // TODO Auto-generated catch block 
     } 
    } 

但我發現了這個錯誤

org.json.JSONException:值{ 「錯誤」:{ 「消息」:「您所做的請求要求身份驗證「, 」稱號「: 」未授權「, 」代碼「:401 }}

我前認爲我通過的令牌將授權我添加新用戶。 這就是爲什麼我不明白這個錯誤。 任何人,請幫助。任何想法如何解決這個問題?

+0

確保執行這個腳本的用戶擁有內部梯形管理員角色爲這個項目。 – koolhead17

回答

0

除檢查您是否擁有目標項目的管理員角色(例如,當您請求身份驗證令牌時,您需要指定租戶ID)時,還請確保身份驗證令牌未過期。

而且我相信你應該使用,而不是

"name", "Lou Mary" 

"username", "Lou Mary"