#! /usr/bin/env fan
//
// Copyright (c) 2008, Brian Frank and Andy Frank
// Licensed under the Academic Free License version 3.0
//
// History:
// 30 Dec 08 Brian Frank Creation
// 08 Sep 09 Brian Frank Rework fandoc -> example
//

using web

**
** Working with WebClient
**
class Client
{

 Void main()
 {
 gets
 pipelining
 // need to have a server which accepts posts for this test
 // posts
 }

 Void gets()
 {
 // simple string get
 echo("\n--- getStr ---")
 str := WebClient(`http://fantom.org/`).getStr
 echo(str.in.readLine + "...")

 // simple binary get
 echo("\n--- getBuf ---")
 buf := WebClient(`http://fantom.org/`).getBuf
 echo(buf.readLine + "...")

 // get as input stream
 echo("\n--- getIn ---")
 c := WebClient(`http://fantom.org/doc/`)
 try
 {
 in := c.getIn
 echo("getIn: " + in.readLine)
 }
 finally c.close

 // dump get response headers and string body
 echo("\n--- response headers ---")
 c = WebClient(`http://google.com/`).writeReq.readRes
 echo("$c.reqUri => $c.resCode $c.resPhrase")
 echo(c.resHeaders.join("\n"))
 echo(c.resStr[0..30] + "...")
 c.close
 }

 Void posts()
 {
 // post form
 c := WebClient(`http://foo/post.cgi`)
 c.postForm(["firstName":"Bob", "lastName":"Smith"])
 echo(c.resStr) // process response
 c.close

 // post content with fixed length
 c = WebClient(`http://foo/post.cgi`)
 c.reqMethod = "POST"
 c.reqHeaders["Content-Type"] = "text/plain; charset=utf-8"
 c.reqHeaders["Content-Length"] = "5"
 c.writeReq
 c.reqOut.print("hello").close
 c.readRes
 echo(c.resStr) // process response
 c.close
 }

 Void pipelining()
 {
 echo("\n--- pipelining ---")
 // pipelining: write 2 requests, then read 2 responses
 c := WebClient()
 c.reqUri = `http://fantom.org/`
 c.writeReq
 c.reqUri = `http://fantom.org/doc/`
 c.writeReq
 c.readRes
 echo(c.resStr[0..30] + "...") // process path1 response
 c.readRes
 echo(c.resStr[0..30] + "...") // process path2 response
 }

}




AltStyle によって変換されたページ (->オリジナル) /