我正在使用Jsoup将表单发布到网站,回复是纯文本,但Jsoup不知道内容类型。因此我使用ignoreContentType(true),因此Jsoup不会因为未知的内容类型而抛出异常。但是我无法弄清楚如何从Jsoup获取原始回复,文本包含一些特殊字符,Jsoup条带,Jsoups也添加了一个body和html标签 - 我不需要它,我只想要原始回复。如何获得原始回复?谢谢!
答案 0 :(得分:5)
您可以使用Response#body()
。 E.g。
String body = Jsoup.connect(url).execute().body();
或者如果您正在进行POST
String body = Jsoup.connect(url).method(Method.POST).data(data).execute().body();
答案 1 :(得分:1)
您可以从Response
获取Connection
对象,它包含原始字节数据。忽略内容类型,否则将在非文本数据上失败。如果您使用body()
,则可能会使用默认字符集来破坏响应。
Connection conn = Jsoup.connect(url).ignoreContentType(true).method(Method.GET);
Connection.Response response = conn.execute();
byte[] raw = response.bodyAsBytes();
// if you want...
Document parsed = response.parse();
答案 2 :(得分:1)
我有同样的问题并分两步解决
1-收集回复
2-读取响应为字节并转换为字符串或解析为您想要的任何内容(json等)
Response resp = jsoup.connect(url).ignoreContentType(true).Method(Method.Post).execute();
String respStr = new String(resp.bodyAsBytes(), StandardCharsets.UTF_8);