groovy - 从 HTTP 请求获取纯 HTML

标签 groovy httprequest grails-2.0 httpbuilder

我正在开发一个 grails 应用程序,并且已经尝试从请求中获取 html 代码几个小时了。我想要做的是获取纯 html(就像在网页源中,包含所有标签和内容),以便我可以处理它。

我已经设法使用以下代码为我的获取请求获取它:

url = ("http://google.com").toURL().getText())

它工作得很好,但我还需要能够发出发布请求。

我尝试过使用 httpBuilder,但我得到的响应看起来像格式良好的文本(带有空格和其他内容),但没有任何 html 标签,而我需要它们。我正在使用的代码如下所示:

def url = "http://urlToRemoteServer.com/"
def http = new HTTPBuilder(url);


http.post( path: 'pathToMyApp',
        requestContentType: "text/xml" ) { resp, reader ->

            println "Tweet response status: ${resp.statusLine}"
            assert resp.statusLine.statusCode == 200
            System.out << reader
        }

谁能告诉我如何获取该html代码?我正在研究 groovy,但 Java 解决方案也同样好。

最佳答案

更改帖子 map 以包含 contentType 以强制进行纯文本解析(并且,我相信更改为 Accepts header ),如下所示:

http.post( path: 'pathToMyApp',
           requestContentType: "text/xml",
           contentType: "text/xml") { resp, reader ->

或者,您可以通过添加 ParserRegistry 来更改此请求和 future 请求的解析器​​。在构造函数之后重新映射:

http.parser.'text/html' = http.parser.'text/plain'

您还可以添加对 setContentType() 的调用,在构造函数调用 HTTPBuilder 之后:

//...
def http = new HTTPBuilder(url);  //existing code
http.contentType = ContentType.TEXT //new addition
http.post( path: 'pathToMyApp', //existing code
//...

关于groovy - 从 HTTP 请求获取纯 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13939354/

相关文章:

java - 常规闭包内部如何工作?

java - rest-assured : Cannot get property 'assertionClosure' on null object调用get时出现空指针异常

java - 如何请求 CONNECT 与 Apache HttpComponents 客户端

java - Grails 2.3 数据库迁移不起作用?

grails - Grails 2.0.0的就地插件

grails - Grails 2.0插件依赖性

jenkins - 使用 groovy 向 jenkins 作业添加附加参数

java - Android 中的 Groovy、Scala、Clojure 等脚本

android - 如何测量服务器的请求和响应时间?

Http header -缓存控制 : max-age - behaviour?