2012-01-04 53 views
2

我想要查看一個特定的字符串是否存在於一個html頁面中,但我似乎無法找到一個簡單的方法來獲取表示該body的字符串。從groovy的響應中獲取html body

我已經嘗試:

http.request(Method.GET, { req -> 
     uri.path = '/x/app/main' 
     response.success = { resp, reader -> 
      assert resp.status == 200 
      println reader.text.startsWith('denied') 
     } 

     response.failure = { resp -> 
      fail("Failure reported: ${resp.statusLine}") 
     } 
    }) 

但reader.text是NodeChildren對象。

如何獲取html(或更具體地說,身體的上下文)作爲一個字符串?

回答

3

您可以直接從響應中獲取輸入流。試試這個:

http.request(Method.GET, { req -> 
    uri.path = '/x/app/main' 
    response.success = { resp -> 
     assert resp.status == 200 
     println resp.entity.content.text.startsWith('denied') 
    } 

    response.failure = { resp -> 
     fail("Failure reported: ${resp.statusLine}") 
    } 
}) 
+0

嘗試過了,得到了錯誤:java.lang.IllegalStateException:內容已在org.apache.http.entity.BasicHttpEntity.getContent(BasicHttpEntity.java:84)被消耗 \t \t在org.apache.http.conn.BasicManagedEntity.getContent(BasicManagedEntity.java:87) – user965697 2012-01-04 16:28:06

+1

確保你使用了一個'arg'response.success'閉包。如果你使用兩個arg版本('response.success = {resp,reader - >'),你會得到這個異常。 – ataylor 2012-01-04 16:36:24

+1

似乎已經做到了!謝謝。問題:有沒有好的文檔列出響應中的內容?我什至不知道你是怎麼想到的:) – user965697 2012-01-04 16:42:27