将从HTTPClient检索到的数据用于JSoup(Use data retrieved from HTTPClient into JSoup)
我正在使用HTTPClient连接到一个网站。以下代码片段用于此目的:
byte[] responseBody = method.getResponseBody(); System.out.println(new String(responseBody));
上面的代码显示了网站的html代码。 此外,我想访问代码中的一些数据,我可以使用以下代码片段使用JSoup访问该代码:
Document doc = Jsoup.connect(url).get();
在上面的代码中,我使用“url”直接指定了网站的网址。 这意味着如果我使用JSoup,我不需要HTTPClient。 有没有办法可以使用HTTPClient检索的“responseBody”集成在JSoup代码中,这样我就不必使用Document doc = Jsoup.connect(url).get();
谢谢
I am using HTTPClient to connect to a website.The following snippet of code is used for this purpose:
byte[] responseBody = method.getResponseBody(); System.out.println(new String(responseBody));
The above code displays the html code of website. Further I wanted to access only some data from the code which I was able to access using JSoup using following code snippet:
Document doc = Jsoup.connect(url).get();
In the above code I have directly specified url of website using "url". which means I do not require HTTPClient if I use JSoup. Is there a way I can use " responseBody" retrieved using HTTPClient to be integrated in JSoup code so that I do not have to use Document doc = Jsoup.connect(url).get();
Thanks
原文:https://stackoverflow.com/questions/21849853
最满意答案
通过在
DocDB
使用抽象类型转换O
并使用类型投影,我获得了一些成功:trait DocDB { type O def searchFor[I]( docs: Iterable[I], queryStrategy: QueryStrategy[I, DocDB] ): Iterable[(I,O)] } trait QueryStrategy[I, +F <: DocDB] class In // class of input documents class Out // class of output documents object MyDocDB extends DocDB { type O = Out def searchFor[I]( docs: Iterable[I], queryStrategy: QueryStrategy[I, DocDB] ) = List() } implicit object MyQueryStrategy extends QueryStrategy[In, MyDocDB.type] implicit def listExt[I] (items: Iterable[I]) = new { def findAt[F <: DocDB](docDB: F) = new { def apply(implicit queryStrategy: QueryStrategy[I, F]): Iterable[(I,F#O)] = { docDB.searchFor[I](items, queryStrategy) } } }
它似乎工作:
scala> val out1: Iterable [(In,Out)] = List[In]() findAt MyDocDB apply out1: Iterable[(In, Out)] = List()
I have some success by turning
O
in an abstract type inDocDB
and using type projection:trait DocDB { type O def searchFor[I]( docs: Iterable[I], queryStrategy: QueryStrategy[I, DocDB] ): Iterable[(I,O)] } trait QueryStrategy[I, +F <: DocDB] class In // class of input documents class Out // class of output documents object MyDocDB extends DocDB { type O = Out def searchFor[I]( docs: Iterable[I], queryStrategy: QueryStrategy[I, DocDB] ) = List() } implicit object MyQueryStrategy extends QueryStrategy[In, MyDocDB.type] implicit def listExt[I] (items: Iterable[I]) = new { def findAt[F <: DocDB](docDB: F) = new { def apply(implicit queryStrategy: QueryStrategy[I, F]): Iterable[(I,F#O)] = { docDB.searchFor[I](items, queryStrategy) } } }
It seems to work:
scala> val out1: Iterable [(In,Out)] = List[In]() findAt MyDocDB apply out1: Iterable[(In, Out)] = List()
相关问答
更多-
你是正确的,编译器可以推断出所有String.Format重载都会返回一个string ,因此推断出一个字符串必须是一个字符串,无论b是什么。 事实是编译器不这样做。 它解决了一般情况,这很好,并且因为具有不同返回类型的重载在C#中是有效的,它只是将返回类型指定为动态并让运行时计算出来。 回答你的具体问题, public string MethodWithoutOverloads(string a, string b) { ... } dynamic a = ""; var result = MethodW ...
-
想象一下会引起的骚动。 “但是编译器可以计算出一个表达式应该被评估为很长时间,为什么运行时不能这样做?” 这不会发生,太昂贵了。 编译器以与运行时相同的方式评估表达式是非常重要的。 如果情况并非如此,编辑常量表达式并用变量替换常量可能会突然导致运行时失败。 很难诊断故障,默认情况下,非常量表达式未被选中。 Imagine the uproar that would cause. "But the compiler can figure out an expression should be evaluate ...
-
发生这种情况是因为PairRDDFunctions方法只有一个def reduceByKey(func: (V, V) ⇒ V, [SOMETHING])重载reduceByKey(func: (V, V) ⇒ V, [SOMETHING]) PairDStreamFunctions reduceByKey(func: (V, V) ⇒ V, [SOMETHING])而PairDStreamFunctions有两个: def reduceByKey(reduceFunc: (V, V) ⇒ V, numPa ...
-
Case对象Zero类型为Zero.type ,是WTF[Zero]的子类型。 因此,当您调用printWTF(Zero) ,编译器会推断W = Zero.type但Zero.type <: WTF[Zero.type]为false,因此编译失败。 另一方面,这个更复杂的签名应该有效: def printWTF[W <: WTF[W], V <: W](w: V with WTF[W]) = println(w.get) 并且作为一个证明,这确实正确地推断了类型: scala> def printWTF[ ...
-
首先,Scala中的情况与Haskell中的情况有所不同,因为它是OO语言,面向对象设置中的类型推断有点复杂。 我知道的唯一的OO语言接近完整类型推断是OCaml。 OCaml通过广泛使用结构类型来实现这一点(在let fo = o.foo 42的推断类型o是“具有将int作为参数的foo方法的对象”,并且推断的返回类型是“无论返回o.foo类型是“,这是这里推断的唯一有用的类型)。 然而,Scala有许多额外的功能(超载,隐式转换)妨碍了OCaml的方法,并且不可能实现全面的全局类型推断。 First o ...
-
你在使用JDK7吗? 关于'问题'的一个问题是JDK7在一些Swing API中添加了泛型,这与scala的工作方式不兼容。 使用JDK6会有所帮助。 有关这方面的更多信息, 请访问: https : //groups.google.com/d/topic/scala-user/01CszZu8ga4/discussion Are you using JDK7? One on the 'issues' is that JDK7 added generics to some of the Swing APIs ...
-
它根据返回分配的变量类型推断出它。 public class GenericTest { public static void main(final String[] args) { final GenericTest test = new GenericTest(); String data = test.echo(); } public
T echo() { return null; } } 在上面的代码示例中 ... -
通过在DocDB使用抽象类型转换O并使用类型投影,我获得了一些成功: trait DocDB { type O def searchFor[I]( docs: Iterable[I], queryStrategy: QueryStrategy[I, DocDB] ): Iterable[(I,O)] } trait QueryStrategy[I, +F <: DocDB] class In // class of input documents class Out // ...
-
为什么它首先不能推断出正确的类型? 编译器确实推断出正确的类型。 给定方法的正确类型是super 。 为什么? 因为这就是类型推断算法的工作原理。 让我们来看看吧。 给定以下方法签名: public static void Foo
(T element, Action action) where T : new() 该算法从第一阶段开始,归结为我们: 否则,如果Ei具有类型U(在我们的示例中为Ei是T element )并且xi(xi是方法参数Foo 是值参数,则从U到Ti进行下限推断。 所 ... -
没有比这更好的解决方案了 class TypeValidator { def validate[T <: Field](t: T)(v: T => Boolean): Boolean = v.apply(t) } 任何其他解决方案将不必要地使validate的签名复杂化。 Scala的类型推断器逐个遍历参数列表,所以当它看到旧版本时,它试图从函数参数和Field参数中推断出T ,并且因为函数参数的类型未完全知道而失败。 这里,inferencer在不考虑函数参数的情况下获取Field参数,并推断出T ...