我想解析这个链接// https://www.express.pk/world/archives/?page=1 // 在Jsoup,但它失败的方式是什么
Mainactivity:
public class MainActivity extends AppCompatActivity {
private TextView result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
result = (TextView) findViewById(R.id.result);
new Thread(new Runnable() {
@Override
public void run () {
final StringBuilder builder = new StringBuilder();
try {
Document doc = Jsoup.connect("https://www.express.pk/world/archives/?page=1/").get();
String title = doc.title();
Elements links = doc.select("a[href]");
builder.append(title).append("\n");
for (Element link : links) {
builder.append("\n").append("").append(link.text());
}
} catch (IOException e) {
builder.append("Error : ").append(e.getMessage()).append("\n");
}
runOnUiThread(new Runnable() {
@Override
public void run () {
result.setText(builder.toString());
}
});
}
}).start();
}
}
Activity_main:
<TextView
android:gravity="center"
android:id="@+id/result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Result ..."
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:textSize="17sp"/>
答案 0 :(得分:1)
此服务器有一些奇怪的行为。对于给定的URL,它返回状态404,这意味着“未找到”但仍然返回预期的内容。
Jsoup检查返回状态,因为它获得404谓词内容不正确,并抛出错误。 要从此网站获取内容,您需要通过设置ignoreHttpErrors标志来禁用此默认行为:
Document doc = Jsoup.connect("https://www.express.pk/world/archives/?page=1/")
.ignoreHttpErrors(true)
.get();
答案 1 :(得分:0)
服务器响应404错误代码,这就是正常的JSoup get机制返回异常的原因。
但是,如果您使用Connection.Response
的更基本功能,则可以管理网络服务器的响应内容Response response = Jsoup.connect("https://www.express.pk/world/archives/?page=1/").execute();
Document doc = response.parse();
您还可以使用
获取返回码int statusCode = response.statusCode();
请注意,我现在没有Java编译器runnig,因此上面的代码不在我的脑海中而且包含错误。