質問
Drupal 6とServices 6.3xモジュールを使用していますが、このモジュールを完全に使用することはできません。 RESTサーバーモジュールも有効にしました。新しいサービスを追加して、リソースを追加しました。ノードリソースを追加し、JSON形式ですべてのノードを取得することができます
私が理解できないのは次のとおりです。
正確なURIまたはTaxonomy_VocabularyリソースのGetTreeメソッドを呼び出す手順である可能性があります
すべてのメソッド(CRUD)機能を有効にするすべてのメソッド(CRUD)機能をアクセスする方法
url-> mydomain.com/service/rest/node.jsonは私のために動作しますが、どうすればgettreeメソッドにアクセスできますか?
私はこれを永遠にこんなに止めています。
編集 :-
ライブリンクはです http://delvelogic.com/merchant/drupal-6.22/services/rest/taxonomy_vocabulary
以下は、私が使用しているJavaコードです。
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = null;
HttpPost postMethod = new HttpPost("http://delvelogic.com/merchant/drupal-6.22/rest/taxonomy_vocabulary/getTree.json");
postMethod.addHeader("Content-type", "application/x-www-form-urlencoded");
postMethod.addHeader("Accept","application/json");
// postMethod.addHeader("Authorization", "basic " + Base64.encodeBytes(("admin"+":"+"admin123").getBytes()));
// httpClient.getCredentialsProvider().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT));
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("vid", ""+1));
nameValuePairs.add(new BasicNameValuePair("parent", ""+1));
nameValuePairs.add(new BasicNameValuePair("maxdepth",""+1));
// nameValuePairs.add(new BasicNameValuePair())
try{
postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = httpClient.execute(postMethod);
InputStream input = response.getEntity().getContent();
BufferedReader rd = new BufferedReader(new InputStreamReader(input),input.toString().length());
String line;
StringBuilder sb = new StringBuilder();
while ((line = rd.readLine()) != null) {
sb.append(line);
}
rd.close();
uploadresponse = sb.toString();
Log.d("Response", ""+uploadresponse);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
また、Firefoxが追加されている場合は、実際にメソッドが機能するのを見ることができますか?
もう一度編集: -
Firefoxで作業するために、この追加をRestclientに見つけました
入力したURLの投稿としてメソッドを選択します http://delvelogic.com/merchant/drupal-6.22/services/rest/taxonomy_vocabulary/gettree
追加されたヘッダー: -
コンテンツタイプ:Application/X-WWW-Form-Urlencoded
Accept:Application/JSON
リクエストボディ: -
&vid = 1&parent = 1&maxdepth = 1
それは私に404を与えてくれます404は語彙なしでID 1が事前に感謝しています
解決
ドキュメントによると、URLは必ずしも最後に.JSONを持つべきではありませんが、これはノード関数で動作している場合に変更された設定だと思います。私はあなたがこの答えを気に入らないことを知っています(私はあなたが以前にそれを試したことをかなり確信しています)が、URLは次のとおりです。 mydomain.com/service/rest/taxonomy_vocabulary/getTree
. 。私はサービスとREST_SERVERモジュールのそれぞれのコードを経験しましたが、それは間違いなくそうあるべきです。
詳細については、サービスTaxonomy_vocabularyの(有効な、合格した)テストモジュールをご覧ください。
ServicesResourCetaxOngyTests :: testVocabularygetTree.
この正常に合格したテストによってアクセスされるURLは次のとおりです。 $path . '/taxonomy_vocabulary/getTree'
, 、 どこ $path
エンドポイントへのパスです(つまり、 mymodule.com/service/rest/
).
ただし、ライブリンクを提供できれば、問題がJavaコードにあるかDrupalであるかどうかをテストすることができます(後者は非常にありそうもないようです)。
編集
PSは、サービスモジュールの多くの経験があるので、この答えにコメントしてください。もう少し情報を持って正しい方向に向けていると確信しています。過去に私が喜びしか持っていなかった何かに苦労している人を見るのは苦痛です!
別の編集
これは私が得た応答です http://delvelogic.com/merchant/drupal-6.22/services/rest/taxonomy_vocabulary
:
<?xml version="1.0" encoding="utf-8"?>
<result>
<nodes/>
<module>taxonomy</module>
<name></name>
<help></help>
<relations>0</relations>
<hierarchy>0</hierarchy>
<multiple>0</multiple>
<required>0</required>
<tags>0</tags>
<weight>0</weight>
<vid>4</vid>
</result>
に注意してください <vid>4</vid>
ビット...私はかなり確信しています vid
あなたは探すべきです 4
, 、 いいえ 1
!