我正在尝试通过HttpURL连接创建一个FlickR请求,我在con.getInputStream()上得到一个java.net.protocolException
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
URL turl = new URL(url);
HttpsURLConnection con = (HttpsURLConnection)turl.openConnection();
InputStream inputStream = con.getInputStream();
xml = getStringFromInputStream(inputStream);
uihandler.post(obj.updateRunnable);
} catch (Exception e) {
e.printStackTrace();
}
}
});
网址是
static final String URL =“https://api.flickr.com/services/rest/?method=flickr.interestingness.getList&api_key=XXXXXXXXXX”;
异常日志
07-07 23:47:36.980: W/System.err(1923): java.net.ProtocolException: Unexpected status line: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: Cache Access Denied</title> <style type="text/css"><!-- /* Page basics */
07-07 23:47:37.020: D/dalvikvm(1923): GC_FOR_ALLOC freed 204K, 9% free 3077K/3356K, paused 32ms, total 35ms
07-07 23:47:37.020: W/System.err(1923): at com.android.okhttp.internal.http.RawHeaders.setStatusLine(RawHeaders.java:108)
07-07 23:47:37.020: W/System.err(1923): at com.android.okhttp.internal.http.RawHeaders.fromBytes(RawHeaders.java:308)
07-07 23:47:37.030: W/System.err(1923): at com.android.okhttp.Connection.makeTunnel(Connection.java:311)
07-07 23:47:37.030: W/System.err(1923): at com.android.okhttp.Connection.upgradeToTls(Connection.java:127)
07-07 23:47:37.030: W/System.err(1923): at com.android.okhttp.Connection.connect(Connection.java:107)
07-07 23:47:37.030: W/System.err(1923): at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
07-07 23:47:37.030: W/System.err(1923): at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
07-07 23:47:37.030: W/System.err(1923): at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
07-07 23:47:37.030: W/System.err(1923): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
07-07 23:47:37.030: W/System.err(1923): at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
07-07 23:47:37.030: W/System.err(1923): at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:161)
07-07 23:47:37.030: W/System.err(1923): at com.example.flickr.XMLParser$2.run(XMLParser.java:99)
07-07 23:47:37.030: W/System.err(1923): at java.lang.Thread.run(Thread.java:841)
任何帮助将不胜感激。
答案 0 :(得分:1)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERROR: Cache Access Denied</title> <style type="text/css"><!-- /* Page basics */
你得到的是html而不是xml,这是你获得例外的原因 检查你的网址。
答案 1 :(得分:0)
服务器无法返回正确形成的HTTP响应。相反,它只是直接返回HTML,没有HTTP标头。在客户端你无能为力。抱怨服务器的人。如果那是你,请修理它。
BTW无法与HTTPS或SSL完美配合,