使用 HTTP

728 篇文章 1 订阅
86 篇文章 0 订阅
使用 HTTP


Web 使用超文本传输协议(Hypertext Transfer Protocol,HTTP)通信,通常用 web 浏览器,但是,出于某些原因,也可能想用脚本或程序中发出 web 请求,例如,通过 RSS 或 Atom feeds 收集站点内容。
生成 HTTP 请求,需要用 System.Net.WebRequest 类的静态方法 Create。它创建 WebRequest 对象,表示对统一资源定位器(URL,用于唯一标识网络上资源的地址)的请求,URL 被传递给 Create 方法;然后,使用 GetResponse 方法获得服务器对这个请求的响应,用 System.Net.WebResponse 类表示。
下面的例子(清单 11-3)演示了调用 BBC 站点上的 RSS。这个例子的核心是函数 getUrlAsXml,它检索来自 URL 的数据,并把数据加载到 XmlDocument;其余部分是对数据的后期处理,即,在控制台上显示每一项的标题,用户可以选择某一项来显示。


清单 11-3. 使用 HTTP

open System

open System.Diagnostics

open System.Net

open System.Xml

 

///makes a http request to the given url

let getUrlAsXml (url: string) =

  let request = WebRequest.Create(url)

  let response = request.GetResponse()

  let stream = response.GetResponseStream()

  let xml = new XmlDocument()

  xml.Load(stream)

  xml

 

///the url we interested in

let url = "http://feeds.bbci.co.uk/news/rss.xml"


///main application function

let main() =

  // read the rss fead

  let xml = getUrlAsXml url

 

  // write out the tiles of all the news items

  let nodes = xml.SelectNodes("/rss/channel/item/title")

  for i in 0 .. (nodes.Count - 1) do

    printf "%i.%s\r\n" (i+ 1) (nodes.[i].InnerText)

 

  // read the number the user wants from the console

  let item = int(Console.ReadLine())

 

  // find the new url

  let newUrl =

    let xpath = sprintf "/rss/channel/item[%i]/link" item

    let node = xml.SelectSingleNode(xpath)

    node.InnerText

 

  // start the url using the shell, this automaticall opens

  // the default browser

  let procStart = new ProcessStartInfo(UseShellExecute =true,

                                       FileName= newUrl)

  let proc = new Process(StartInfo = procStart)

  proc.Start() |> ignore

 

do main()


[

1、需要引用 System.Xml.dll

2、url 要改成:

let url = "http://feeds.bbci.co.uk/news/rss.xml"

]


这个结果是写作时的,实际运行会有变化:


1. Five-step check for nano safety
2. Neanderthal DNA secrets unlocked
3. Stem cells 'treat muscle disease'
4. World Cup site threat to swallows
5. Clues to pandemic bird flu found
6. Mice star as Olympic food tasters
7. Climate bill sets carbon target
8. Physics promises wireless power
9. Heart 'can carry out own repairs'
10. Average European 'is overweight'
11. Contact lost with Mars spacecraft
12. Air guitar T-shirt rocks for real
13. Chocolate 'cuts blood clot risk'
14. Case for trawl ban 'overwhelming'
15. UN chief issues climate warning
16. Japanese begin annual whale hunt
17. Roman ship thrills archaeologists
18. Study hopeful for world's forests
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值