2017-06-01 1 views
0

こんにちは私はmoodleで新しく、Webサービスを呼び出すときにエラーが発生しています。Moodle rest post機能でエラーを返すcore_user_get_users_by_field

現在、以下の関数core_user_get_users_by_fieldを使用してmoodleからユーザーを取得しようとしています。私はrest serviceを使用しています。私はすでにユーザーを作成して管理していますので、このサービスを使用するために認証されています。怒鳴るコードがユーザーを作成するために使用されたされたフィールド

:私は受けてい

エラーが単一の構造で必要なキーがありません

です。私がエラーから得た問題は、投稿用に送る必要のあるパラメータがうまくフォーマットされていないことです。誰もがこの方法または他の方法で正しく検索する方法を知っていますか?

 String token = "token"; 

     String postData = "username=username"; 

     string createRequest = string.Format("http://domain/webservice/rest/server.php?wstoken={0}&wsfunction={1}&moodlewsrestformat=json", token, "core_user_get_users_by_field"); 

     // Call Moodle REST Service 
     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(createRequest); 
     req.Method = "POST"; 
     req.ContentType = "application/x-www-form-urlencoded"; 

     // Encode the parameters as form data: 
     byte[] formData = 
      UTF8Encoding.UTF8.GetBytes(postData); 
     req.ContentLength = formData.Length; 

     // Write out the form Data to the request: 
     using (Stream post = req.GetRequestStream()) 
     { 
      post.Write(formData, 0, formData.Length); 
     } 


     // Get the Response 
     HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 
     Stream resStream = resp.GetResponseStream(); 
     StreamReader reader = new StreamReader(resStream); 
     string contents = reader.ReadToEnd(); 

     // Deserialize 
     JavaScriptSerializer serializer = new JavaScriptSerializer(); 
     if (contents.Contains("exception")) 
     { 
      // Error 
      MoodleException moodleError = serializer.Deserialize<MoodleException>(contents); 
     } 
     else 
     { 
      // Good 

     } 

答えて

1

次のキーでパラメータとして与えられた連想配列を必要core_user_get_users_by_field Webサービス:「ID」
「値」:
「フィールドを」値の整数の配列は、(おそらくだけで、アレイでなければならないにPHPで一つの値)

は、それは例えば、次のようになります。

$parameters = array('field' => 'id', 'values' => array(13)); 

それは意味:その「ID」もちろん、13の値を持つユーザー、あなたが他のパーを使用することができますが( 'field' => 'lastname'、 'values' => array( 'Smith'))
選択できるパラメータは、Moodleの 'user'テーブルのフィールドです。
postData変数にこれらのパラメータを作成してください。

+0

感謝を投稿する私のプットで、この郵便配達中のURLと設定したHTTPメソッドを働くURLです –

0

は、ここでの方法をたくさん助けた

hostname/webservice/rest/server.php?wstoken=any_token&wsfunction=core_user_get_users_by_field&field=email&values[0][email protected] 
&moodlewsrestformat=json 
関連する問題