java.net.URLConnection在这里经常询问使用情况,Oracle教程对此非常简洁.
该教程基本上只显示了如何触发GET请求并读取响应.它没有解释如何使用它来执行POST请求,设置请求标头,读取响应标头,处理cookie,提交HTML表单,上传文件等.
那么,我如何使用java.net.URLConnection触发和处理"高级"HTTP请求?
我曾经问过如何检索视频文件的嵌入式网址并成功完成的问题.现在我有一个不同的问题.WUnderground API网络摄像头响应的json响应提供以下URL:
https://www.wunderground.com/webcams/cadot1/902/show.html
使用JSoup并根据我的初始问题的答案,我能够得到这个嵌入式链接:
https://www.wunderground.com/webcams/cadot1/902/video.html?month=11&year=2016&filename=current.mp4
在尝试将视频从该网址"流式传输"到VideoView时,我不断收到错误"无法播放视频".在查看该链接的源代码后,我注意到需要播放的视频文件未在html中引用,而是在javascript中引用.如何获取需要播放的视频文件的直接链接?使用JSoup还是其他进程?
网址源https://www.wunderground.com/webcams/cadot1/902/video.html?month=11&year=2016&filename=current.mp4显示<script>括号内所需视频文件的以下内容:
网址:"//icons.wunderground.com/webcamcurrent/c/a/cadot1/902/current.mp4?e=1480377508"
我正在使用JSoup从响应URL获取视频的嵌入式URL,如下所示:
private class VideoLink extends AsyncTask<Void, Void, Void> {
String title;
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog.setTitle("JSOUP Test");
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
try {
// for avoiding javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name
System.setProperty("jsse.enableSNIExtension", "false");
// WARNING: do it only if security isn't important, otherwise you have
// to follow this advices: http://stackoverflow.com/a/7745706/1363265
// Create a trust manager that does not validate certificate …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Jsoup从站点获取数据.链接到该网站是点击这里!
这是我获取数据的代码.`
// WARNING: do it only if security isn't important, otherwise you have
// to follow this advices: http://stackoverflow.com/a/7745706/1363265
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager(){
public X509Certificate[] getAcceptedIssuers(){return null;}
public void checkClientTrusted(X509Certificate[] certs, String authType){}
public void checkServerTrusted(X509Certificate[] certs, String authType){}
}};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
;
}` …Run Code Online (Sandbox Code Playgroud)