以下のコード スニペットは、get リクエストを処理するサーバーからのものです。
サーバー スニペット
1)
io.serve(handler, InternetAddress.LOOPBACK_IP_V4, 8080).then((server) {
print('Listening on port 8080');
}).catchError((error) => print(error));
2)
Router routes = new Router()
..get('/newest', handler.handleNewest)
..get('/anonymous', handler.handleAnonymousGetRequest)
..post('/anonymous', handler.handleAnonymousPostRequest);
3)
shelf.Response handleNewest(shelf.Request request){
print('got request for newest');
return new shelf.Response.ok('sample content later fetched form db');
}
クリック イベントでは、クライアント アプリでもこのコードを実行します。
void makeRequestNewest() {
String path = 'http://127.0.0.1:8080/newest';
HttpRequest.getString(path)
.then((String newestContent){
post_list.appendText(newestContent);
})
.catchError((Error error){
post_list.appendText('an error occurred: ' + error.toString());
});
残念ながら、これgetString
は成功しません。catchError
が実行され、結果は になりますan error occurred: Instance of '_XMLHttpRequestProgressEvent'
。また、Dart Editor の ToolsOutput コマンドラインで[web] GET /newest => Could not find asset linkShepherdClient|web/newest.
. そのディレクトリが存在しないため、これは正しいです。ディレクトリをパラメーターとして使用して正しいハンドラーを実行し、正しい値を に返すことができると思っていました.ok()
が、そうではないようです。これは、サーバー上のこのディレクトリから常に実際にデータを取得しようとするため、GET 要求を使用してどのソースからでもデータを取得できないということですか?
編集: http パッケージを使用したコード例。(動作していません)
import 'package:http/http.dart' as http;
import 'package:http/browser_client.dart';
void makeRequestNewest() {
String path = 'http://127.0.0.1:8080/newest';
var client = new BrowserClient();
client.get(path)
.then((response){
post_list.appendText('response status: ${response.statusCode}');
post_list.appendText('Response body: ${response.body}');
});
}
http パッケージなどの追加パッケージを使用した回答も大歓迎です。