[HtmlUnit] [htmlunit:bugs] #253 App crashes when I want to get a website using HtmlUnit
RBRi via HtmlUnit-develop <[email protected]> Fri, 10 Mar 2023 18:38:01 -0000
| Newsgroups | gmane.comp.java.htmlunit.devel |
|---|---|
| Message-ID | </p/htmlunit/feature-requests/253/3c09858f7c65b8459fd4cb22b87359a3c31652f3.bugs@htmlunit.p.sourceforge.net> |
This is a multi-part message in MIME format.
--===============6120617878302438002==
Content-Type: multipart/related; boundary="===============4462104410993652281=="
This is a multi-part message in MIME format.
--===============4462104410993652281==
Content-Type: multipart/alternative; boundary="===============7329023262558163793=="
MIME-Version: 1.0
--===============7329023262558163793==
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
this should be solved now - please have a look at https://github.com/HtmlUnit/htmlunit-android
---
** [feature-requests:#253] App crashes when I want to get a website using HtmlUnit**
**Status:** pending
**Group:** 2.31
**Labels:** android runtime-error java htmlunit html android studio
**Created:** Sat May 26, 2018 01:15 PM UTC by Venatorc Coolerfigo
**Last Updated:** Sun May 27, 2018 06:34 PM UTC
**Owner:** RBRi
For my app I want to get the html-text of a website. But the dynamic text on my website is written in JavaScript, so I wrote a Java-programm where I get the text using "HtmlUnit". Now I want to display this text in my android app. When I importet the newest version of HtmlUnit in Android-Studio an error occurred. I solved it by implementing an older version of HtmlUnit into the build.gradle:
~~~
dependencies {
implementation 'net.sourceforge.htmlunit:htmlunit:2.12'
}
~~~
I also added "internet-permission" to the AndroidManifest.xml. Then I tried using HtmlUnit like in Java, but when I try to launch the app, it immediately crashes. The code of my "MainActivity.java" is the following:
~~~
package com.example.test.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebClient webClient = new WebClient();
try {
final HtmlPage page = webClient.getPage("https://www.google.com/");
} catch (IOException e) {
e.printStackTrace();
}
}
}
~~~
Without final HtmlPage page = webClient.getPage("https://www.google.com/"); the app starts perfectly without any errors. As soon as I add this code, the app doesnt start properly and when I use the debugger, the following errors occur (I put it into "code-style" so it can be read better):
~~~
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.test.myapplication, PID: 8543
java.lang.IncompatibleClassChangeError: Superclass org.apache.http.conn.scheme.PlainSocketFactory of com.gargoylesoftware.htmlunit.SocksSocketFactory is declared final (declaration of 'com.gargoylesoftware.htmlunit.SocksSocketFactory' appears in /data/app/com.example.test.myapplication-2/split_lib_dependencies_apk.apk)
at com.gargoylesoftware.htmlunit.WebClient.createWebConnection(WebClient.java:2123)
at com.gargoylesoftware.htmlunit.WebClient.<init>(WebClient.java:129)
at com.gargoylesoftware.htmlunit.WebClient.<init>(WebClient.java:182)
at com.example.test.myapplication.MainActivity.onCreate(MainActivity.java:18)
at android.app.Activity.performCreate(Activity.java:6912)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2877)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
~~~
Do I have to change the HtmlUnit-code? I already tried it but the code is "readonly". Or what can I do/use otherwise? (Maybe I have an error in my code?)
Thank you in advance! Venatorc
PS. I have already tried to declare HtmlPage page as not final.
---
Sent from sourceforge.net because [email protected] is subscribed to https://sourceforge.net/p/htmlunit/feature-requests/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/htmlunit/admin/feature-requests/options. Or, if this is a mailing list, you can unsubscribe from the mailing list.
--===============7329023262558163793==
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="utf-8"
<div class=3D"markdown_content"><p>this should be solved now - please have =
a look at <a href=3D"https://github.com/HtmlUnit/htmlunit-android" rel=3D"n=
ofollow">https://github.com/HtmlUnit/htmlunit-android</a></p>
<hr/>
<p><strong> <a class=3D"alink" href=3D"https://sourceforge.net/p/htmlunit/f=
eature-requests/253/">[feature-requests:#253]</a> App crashes when I want t=
o get a website using HtmlUnit</strong></p>
<p><strong>Status:</strong> pending<br/>
<strong>Group:</strong> 2.31<br/>
<strong>Labels:</strong> android runtime-error java htmlunit html android s=
tudio <br/>
<strong>Created:</strong> Sat May 26, 2018 01:15 PM UTC by Venatorc Coolerf=
igo<br/>
<strong>Last Updated:</strong> Sun May 27, 2018 06:34 PM UTC<br/>
<strong>Owner:</strong> RBRi</p>
<p>For my app I want to get the html-text of a website. But the dynamic tex=
t on my website is written in JavaScript, so I wrote a Java-programm where =
I get the text using "HtmlUnit". Now I want to display this text in my andr=
oid app. When I importet the newest version of HtmlUnit in Android-Studio a=
n error occurred. I solved it by implementing an older version of HtmlUnit =
into the build.gradle:</p>
<div class=3D"codehilite"><pre><span></span><code>dependencies {
implementation 'net.sourceforge.htmlunit:htmlunit:2.12'
}
</code></pre></div>
<p>I also added "internet-permission" to the AndroidManifest.xml. Then I tr=
ied using HtmlUnit like in Java, but when I try to launch the app, it immed=
iately crashes. The code of my "MainActivity.java" is the following:</p>
<div class=3D"codehilite"><pre><span></span><code><span class=3D"n">package=
</span> <span class=3D"n">com</span><span class=3D"o">.</span><span class=
=3D"n">example</span><span class=3D"o">.</span><span class=3D"n">test</span=
><span class=3D"o">.</span><span class=3D"n">myapplication</span><span clas=
s=3D"p">;</span>
<span class=3D"kn">import</span> <span class=3D"nn">android.support.v7.app.=
AppCompatActivity</span><span class=3D"p">;</span>
<span class=3D"kn">import</span> <span class=3D"nn">android.os.Bundle</span=
><span class=3D"p">;</span>
<span class=3D"kn">import</span> <span class=3D"nn">com.gargoylesoftware.ht=
mlunit.WebClient</span><span class=3D"p">;</span>
<span class=3D"kn">import</span> <span class=3D"nn">com.gargoylesoftware.ht=
mlunit.html.HtmlPage</span><span class=3D"p">;</span>
<span class=3D"kn">import</span> <span class=3D"nn">java.io.IOException</sp=
an><span class=3D"p">;</span>
<span class=3D"n">public</span> <span class=3D"k">class</span> <span class=
=3D"nc">MainActivity</span> <span class=3D"n">extends</span> <span class=3D=
"n">AppCompatActivity</span> <span class=3D"p">{</span>
<span class=3D"nd">@Override</span>
<span class=3D"n">protected</span> <span class=3D"n">void</span> <span =
class=3D"n">onCreate</span><span class=3D"p">(</span><span class=3D"n">Bund=
le</span> <span class=3D"n">savedInstanceState</span><span class=3D"p">)</s=
pan> <span class=3D"p">{</span>
<span class=3D"nb">super</span><span class=3D"o">.</span><span clas=
s=3D"n">onCreate</span><span class=3D"p">(</span><span class=3D"n">savedIns=
tanceState</span><span class=3D"p">);</span>
<span class=3D"n">setContentView</span><span class=3D"p">(</span><s=
pan class=3D"n">R</span><span class=3D"o">.</span><span class=3D"n">layout<=
/span><span class=3D"o">.</span><span class=3D"n">activity_main</span><span=
class=3D"p">);</span>
<span class=3D"n">WebClient</span> <span class=3D"n">webClient</spa=
n> <span class=3D"o">=3D</span> <span class=3D"n">new</span> <span class=3D=
"n">WebClient</span><span class=3D"p">();</span>
<span class=3D"k">try</span> <span class=3D"p">{</span>
<span class=3D"n">final</span> <span class=3D"n">HtmlPage</span=
> <span class=3D"n">page</span> <span class=3D"o">=3D</span> <span class=3D=
"n">webClient</span><span class=3D"o">.</span><span class=3D"n">getPage</sp=
an><span class=3D"p">(</span><span class=3D"s2">"https://www.google.com/"</=
span><span class=3D"p">);</span>
<span class=3D"p">}</span> <span class=3D"n">catch</span> <span cla=
ss=3D"p">(</span><span class=3D"n">IOException</span> <span class=3D"n">e</=
span><span class=3D"p">)</span> <span class=3D"p">{</span>
<span class=3D"n">e</span><span class=3D"o">.</span><span class=
=3D"n">printStackTrace</span><span class=3D"p">();</span>
<span class=3D"p">}</span>
<span class=3D"p">}</span>
<span class=3D"p">}</span>
</code></pre></div>
<p>Without final HtmlPage page =3D webClient.getPage("https://www.google.co=
m/"); the app starts perfectly without any errors. As soon as I add this co=
de, the app doesnt start properly and when I use the debugger, the followin=
g errors occur (I put it into "code-style" so it can be read better):</p>
<div class=3D"codehilite"><pre><span></span><code><span class=3D"nv">E</spa=
n><span class=3D"o">/</span><span class=3D"nv">AndroidRuntime</span>:<span =
class=3D"w"> </span><span class=3D"nv">FATAL</span><span class=3D"w"> </spa=
n><span class=3D"nv">EXCEPTION</span>:<span class=3D"w"> </span><span class=
=3D"nv">main</span>
<span class=3D"w"> </span><span class=3D"nv">Process</span=
>:<span class=3D"w"> </span><span class=3D"nv">com</span>.<span class=3D"nv=
">example</span>.<span class=3D"nv">test</span>.<span class=3D"nv">myapplic=
ation</span>,<span class=3D"w"> </span><span class=3D"nv">PID</span>:<span =
class=3D"w"> </span><span class=3D"mi">8543</span>
<span class=3D"w"> </span><span class=3D"nv">java</span>.<=
span class=3D"nv">lang</span>.<span class=3D"nv">IncompatibleClassChangeErr=
or</span>:<span class=3D"w"> </span><span class=3D"nv">Superclass</span><sp=
an class=3D"w"> </span><span class=3D"nv">org</span>.<span class=3D"nv">apa=
che</span>.<span class=3D"nv">http</span>.<span class=3D"nv">conn</span>.<s=
pan class=3D"nv">scheme</span>.<span class=3D"nv">PlainSocketFactory</span>=
<span class=3D"w"> </span><span class=3D"nv">of</span><span class=3D"w"> </=
span><span class=3D"nv">com</span>.<span class=3D"nv">gargoylesoftware</spa=
n>.<span class=3D"nv">htmlunit</span>.<span class=3D"nv">SocksSocketFactory=
</span><span class=3D"w"> </span><span class=3D"nv">is</span><span class=3D=
"w"> </span><span class=3D"nv">declared</span><span class=3D"w"> </span><sp=
an class=3D"nv">final</span><span class=3D"w"> </span><span class=3D"ss">(<=
/span><span class=3D"nv">declaration</span><span class=3D"w"> </span><span =
class=3D"nv">of</span><span class=3D"w"> </span><span class=3D"s1">'com.gar=
goylesoftware.htmlunit.SocksSocketFactory'</span><span class=3D"w"> </span>=
<span class=3D"nv">appears</span><span class=3D"w"> </span><span class=3D"n=
v">in</span><span class=3D"w"> </span><span class=3D"o">/</span><span class=
=3D"nv">data</span><span class=3D"o">/</span><span class=3D"nv">app</span><=
span class=3D"o">/</span><span class=3D"nv">com</span>.<span class=3D"nv">e=
xample</span>.<span class=3D"nv">test</span>.<span class=3D"nv">myapplicati=
on</span><span class=3D"o">-</span><span class=3D"mi">2</span><span class=
=3D"o">/</span><span class=3D"nv">split_lib_dependencies_apk</span>.<span c=
lass=3D"nv">apk</span><span class=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">com</span>.<span class=3D"nv">=
gargoylesoftware</span>.<span class=3D"nv">htmlunit</span>.<span class=3D"n=
v">WebClient</span>.<span class=3D"nv">createWebConnection</span><span clas=
s=3D"ss">(</span><span class=3D"nv">WebClient</span>.<span class=3D"nv">jav=
a</span>:<span class=3D"mi">2123</span><span class=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">com</span>.<span class=3D"nv">=
gargoylesoftware</span>.<span class=3D"nv">htmlunit</span>.<span class=3D"n=
v">WebClient</span>.<span class=3D"o"><</span><span class=3D"nv">init</s=
pan><span class=3D"o">></span><span class=3D"ss">(</span><span class=3D"=
nv">WebClient</span>.<span class=3D"nv">java</span>:<span class=3D"mi">129<=
/span><span class=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">com</span>.<span class=3D"nv">=
gargoylesoftware</span>.<span class=3D"nv">htmlunit</span>.<span class=3D"n=
v">WebClient</span>.<span class=3D"o"><</span><span class=3D"nv">init</s=
pan><span class=3D"o">></span><span class=3D"ss">(</span><span class=3D"=
nv">WebClient</span>.<span class=3D"nv">java</span>:<span class=3D"mi">182<=
/span><span class=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">com</span>.<span class=3D"nv">=
example</span>.<span class=3D"nv">test</span>.<span class=3D"nv">myapplicat=
ion</span>.<span class=3D"nv">MainActivity</span>.<span class=3D"nv">onCrea=
te</span><span class=3D"ss">(</span><span class=3D"nv">MainActivity</span>.=
<span class=3D"nv">java</span>:<span class=3D"mi">18</span><span class=3D"s=
s">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">android</span>.<span class=3D"=
nv">app</span>.<span class=3D"nv">Activity</span>.<span class=3D"nv">perfor=
mCreate</span><span class=3D"ss">(</span><span class=3D"nv">Activity</span>=
.<span class=3D"nv">java</span>:<span class=3D"mi">6912</span><span class=
=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">android</span>.<span class=3D"=
nv">app</span>.<span class=3D"nv">Instrumentation</span>.<span class=3D"nv"=
>callActivityOnCreate</span><span class=3D"ss">(</span><span class=3D"nv">I=
nstrumentation</span>.<span class=3D"nv">java</span>:<span class=3D"mi">112=
6</span><span class=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">android</span>.<span class=3D"=
nv">app</span>.<span class=3D"nv">ActivityThread</span>.<span class=3D"nv">=
performLaunchActivity</span><span class=3D"ss">(</span><span class=3D"nv">A=
ctivityThread</span>.<span class=3D"nv">java</span>:<span class=3D"mi">2877=
</span><span class=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">android</span>.<span class=3D"=
nv">app</span>.<span class=3D"nv">ActivityThread</span>.<span class=3D"nv">=
handleLaunchActivity</span><span class=3D"ss">(</span><span class=3D"nv">Ac=
tivityThread</span>.<span class=3D"nv">java</span>:<span class=3D"mi">2985<=
/span><span class=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">android</span>.<span class=3D"=
nv">app</span>.<span class=3D"nv">ActivityThread</span>.<span class=3D"o">-=
</span><span class=3D"nv">wrap14</span><span class=3D"ss">(</span><span cla=
ss=3D"nv">ActivityThread</span>.<span class=3D"nv">java</span><span class=
=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">android</span>.<span class=3D"=
nv">app</span>.<span class=3D"nv">ActivityThread</span>$<span class=3D"nv">=
H</span>.<span class=3D"nv">handleMessage</span><span class=3D"ss">(</span>=
<span class=3D"nv">ActivityThread</span>.<span class=3D"nv">java</span>:<sp=
an class=3D"mi">1635</span><span class=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">android</span>.<span class=3D"=
nv">os</span>.<span class=3D"nv">Handler</span>.<span class=3D"nv">dispatch=
Message</span><span class=3D"ss">(</span><span class=3D"nv">Handler</span>.=
<span class=3D"nv">java</span>:<span class=3D"mi">102</span><span class=3D"=
ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">android</span>.<span class=3D"=
nv">os</span>.<span class=3D"nv">Looper</span>.<span class=3D"k">loop</span=
><span class=3D"ss">(</span><span class=3D"nv">Looper</span>.<span class=3D=
"nv">java</span>:<span class=3D"mi">154</span><span class=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">android</span>.<span class=3D"=
nv">app</span>.<span class=3D"nv">ActivityThread</span>.<span class=3D"nv">=
main</span><span class=3D"ss">(</span><span class=3D"nv">ActivityThread</sp=
an>.<span class=3D"nv">java</span>:<span class=3D"mi">6692</span><span clas=
s=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">java</span>.<span class=3D"nv"=
>lang</span>.<span class=3D"nv">reflect</span>.<span class=3D"nv">Method</s=
pan>.<span class=3D"nv">invoke</span><span class=3D"ss">(</span><span class=
=3D"nv">Native</span><span class=3D"w"> </span><span class=3D"nv">Method</s=
pan><span class=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">com</span>.<span class=3D"nv">=
android</span>.<span class=3D"nv">internal</span>.<span class=3D"nv">os</sp=
an>.<span class=3D"nv">ZygoteInit</span>$<span class=3D"nv">MethodAndArgsCa=
ller</span>.<span class=3D"nv">run</span><span class=3D"ss">(</span><span c=
lass=3D"nv">ZygoteInit</span>.<span class=3D"nv">java</span>:<span class=3D=
"mi">1468</span><span class=3D"ss">)</span>
<span class=3D"w"> </span><span class=3D"nv">at</span>=
<span class=3D"w"> </span><span class=3D"nv">com</span>.<span class=3D"nv">=
android</span>.<span class=3D"nv">internal</span>.<span class=3D"nv">os</sp=
an>.<span class=3D"nv">ZygoteInit</span>.<span class=3D"nv">main</span><spa=
n class=3D"ss">(</span><span class=3D"nv">ZygoteInit</span>.<span class=3D"=
nv">java</span>:<span class=3D"mi">1358</span><span class=3D"ss">)</span>
</code></pre></div>
<p>Do I have to change the HtmlUnit-code? I already tried it but the code i=
s "readonly". Or what can I do/use otherwise? (Maybe I have an error in my =
code?)</p>
<p>Thank you in advance! Venatorc</p>
<p>PS. I have already tried to declare HtmlPage page as not final.</p>
<hr/>
<p>Sent from sourceforge.net because [email protected]=
is subscribed to <a href=3D"https://sourceforge.net/p/htmlunit/feature-req=
uests/">https://sourceforge.net/p/htmlunit/feature-requests/</a></p>
<p>To unsubscribe from further messages, a project admin can change setting=
s at <a href=3D"https://sourceforge.net/p/htmlunit/admin/feature-requests/o=
ptions.">https://sourceforge.net/p/htmlunit/admin/feature-requests/options.=
</a> Or, if this is a mailing list, you can unsubscribe from the mailing l=
ist.</p></div>
--===============7329023262558163793==--
--===============4462104410993652281==--
--===============6120617878302438002==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--===============6120617878302438002==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
HtmlUnit-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/htmlunit-develop
--===============6120617878302438002==--