|  | #!mojo mojo:sky_viewer | 
|  | <sky> | 
|  | <script> | 
|  | import '/sky/framework/embedder.dart'; | 
|  | import 'dart:async'; | 
|  | import 'dart:typed_data'; | 
|  | import "dart:sky.internals" as internals; | 
|  | import 'mojo:bindings'; | 
|  | import 'mojo:core'; | 
|  |  | 
|  | import 'package:mojo/services/network/public/interfaces/network_service.mojom.dart'; | 
|  | import 'package:mojo/services/network/public/interfaces/url_loader.mojom.dart'; | 
|  |  | 
|  | Future<String> run(url) async { | 
|  | var networkService= new NetworkServiceProxy.unbound(); | 
|  | embedder.connectToService("mojo:network_service", networkService); | 
|  |  | 
|  | var urlLoader = new UrlLoaderProxy.unbound(); | 
|  | networkService.ptr.createUrlLoader(urlLoader); | 
|  |  | 
|  | var urlRequest = new UrlRequest() | 
|  | ..url = url | 
|  | ..autoFollowRedirects = true; | 
|  | var urlResponse = await urlLoader.ptr.start(urlRequest); | 
|  |  | 
|  | urlLoader.close(); | 
|  | networkService.close(); | 
|  |  | 
|  | print("url => ${urlResponse.response.url}"); | 
|  | print("status_line => ${urlResponse.response.statusLine}"); | 
|  | print("mime_type => ${urlResponse.response.mimeType}"); | 
|  |  | 
|  | ByteData bodyData = | 
|  | await DataPipeDrainer.drainHandle(urlResponse.response.body); | 
|  | print("read ${bodyData.lengthInBytes} bytes"); | 
|  |  | 
|  | return new String.fromCharCodes(new Uint8List.view(bodyData.buffer)); | 
|  | } | 
|  |  | 
|  | main() async { | 
|  | var url = "http://127.0.0.1:8000/sky/tests/services/resources/pass.txt"; | 
|  | var result = await run(url); | 
|  | internals.notifyTestComplete(result); | 
|  | } | 
|  | </script> | 
|  | </sky> |