0

REST API を使用して、Neo4j データベースにクエリを実行しようとしています。

Cypherクエリ言語を使用してデータを取得せずにこれまでのところ動作していますが、「最新」、つまりUNIXタイムスタンプDESCでソートされたノードを取得する必要があります。

の HTTP 本文内にクエリを追加しようとしましたNSMutableURLRequestが、HTTP エラーが発生しています405

これが私のコードです:

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@node/%i", EventsManagerDataURL, CreatorID]];

NSLog(@"Connecting to URL: %@", url);

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];

NSString *jsonMap = @"{'query' : 'start x  = node(4,6,7) return x order by x.datestart,'params' : {}}";
NSData *jsonData = [jsonMap dataUsingEncoding:NSUTF8StringEncoding];

[request setHTTPMethod:@"POST"];

[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", jsonData.length] forHTTPHeaderField:@"Content-Length"];

[request setHTTPBody:jsonData];

[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){

    if (data){
        NSLog(@"%s. Data: %@", _cmd, [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
    } else {
        NSLog(@"Error: %@", error.localizedDescription);
    }
}];
4

1 に答える 1

3

ここに一重引用符がありません:

NSString *jsonMap = @"{'query' : 'start x  = node(4,6,7) return x order by x.datestart***'***,'params' : {}}";

実際には、二重引用符が必要です。

NSString *jsonMap = @"{\"query\" : \"start x  = node(4,6,7) return x order by x.datestart\", \"params\" : {}}";

cURL でテストします。

curl -H Accept:application/json -H Content-Type:application/json -X POST -d '{"query" : "start x  = node(4,6,7) return x order by x.datestart", "params" : {}}' localhost:7474/db/data/cypher
于 2013-01-23T17:08:42.640 に答える