HTTP Builder/Groovy - 获取源文本_和_ XmlSlurper 输出?

发布于 2024-09-03 17:56:14 字数 1036 浏览 9 评论 0原文

我在这里读: http://groovy.codehaus.org/modules/http-builder/ doc/get.html

我似乎能够得到

i) 由 NekoHTML 解析的 XMLSlurper 输出,使用:

def http = new HTTPBuilder('http://www.google.com') 
def html = http.get( path : '/search', query : [q:'Groovy'] )

ii) 原始文本使用:

http.get( path : '/search',
          contentType : TEXT,
          query : [q:'Groovy'] ) { resp, reader ->          
  println "response status: ${resp.statusLine}"
  println 'Headers: -----------'
  resp.headers.each { h ->
  println " ${h.name} : ${h.value}"
  }
  println 'Response data: -----'
  System.out << reader
  println '\n--------------------'
}

我遇到了一些麻烦,想要得到两者 (i) 和 (ii) 在我得到的实际 html 上调试我的 XmlSlurper 代码。

有什么建议我可以如何去做这件事吗?

我可以使用 parseString(string) 方法或 parse(reader) 方法轻松实例化具有相关字符串的 XmlSlurper 对象,但我似乎无法正确获取 Neko 处理步骤。

有什么提示吗?

谢谢你! 米沙

I am reading here:
http://groovy.codehaus.org/modules/http-builder/doc/get.html

I seem to be able to get

i) XMLSlurper output as parsed by NekoHTML using:

def http = new HTTPBuilder('http://www.google.com') 
def html = http.get( path : '/search', query : [q:'Groovy'] )

ii) Raw text using:

http.get( path : '/search',
          contentType : TEXT,
          query : [q:'Groovy'] ) { resp, reader ->          
  println "response status: ${resp.statusLine}"
  println 'Headers: -----------'
  resp.headers.each { h ->
  println " ${h.name} : ${h.value}"
  }
  println 'Response data: -----'
  System.out << reader
  println '\n--------------------'
}

I am having some trouble and would like to get BOTH (i) and (ii) to debug my XmlSlurper code on the actual html I am getting.

Any suggestions how I might go about doing this?

I can easily instantiate an XmlSlurper object with the relevant string using the parseString(string) method or the parse(reader) method, but I cannot seem to get the Neko processing step correct.

Any hints?

Thank you!
Misha

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

日暮斜阳 2024-09-10 17:56:14

好的,就在这里。

得出自:
http://groovy.codehaus.org/Testing+Web+Applications

def html=http.get(uri:'http://www.google.com',contentType:groovyx.net.http.ContentType.TEXT) { resp,reader ->
  def s=reader.text
  new File("temp.html")<<s
  new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parseText(s)          
}

谢谢!
米沙

Ok here it is.

Figured out from:
http://groovy.codehaus.org/Testing+Web+Applications

def html=http.get(uri:'http://www.google.com',contentType:groovyx.net.http.ContentType.TEXT) { resp,reader ->
  def s=reader.text
  new File("temp.html")<<s
  new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parseText(s)          
}

Thank you!
Misha

攒一口袋星星 2024-09-10 17:56:14

您可以使用reader.readLines()通过以下实现实现相同的目的,而不必先转储到文件并从中读取:

def html=http.get(uri:'http://www.google.com',contentType:groovyx.net.http.ContentType.TEXT) { resp,reader ->

  String response = (reader.readLines().join() as String)

  new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parseText( response)          
}

Rather than having to dump to file first and read from it, you could achieve the same with the following implementation using reader.readLines():

def html=http.get(uri:'http://www.google.com',contentType:groovyx.net.http.ContentType.TEXT) { resp,reader ->

  String response = (reader.readLines().join() as String)

  new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parseText( response)          
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文