简体   繁体   中英

java.net.protocolException with HttpsURLConnection in android

I am trying to create a FlickR request through HttpURL connection and I get a java.net.protocolException on con.getInputStream()

        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();
                }
            }
        });

the url is

static final String URL = " https://api.flickr.com/services/rest/?method=flickr.interestingness.getList&api_key=XXXXXXXXXX ";

Exception Log

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)

any help would be appreciated.

    <!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 */

You are getting html instead of xml, the reason you are getting an exception.
Check your Url.

The server is kindly failing to return a correctly formed HTTP response. Instead it is just returning straight HTML, no HTTP headers. Nothing you can do about it at the client end. Complain to the server people. If that's you, fix it.

BTW Nothing to do with HTTPS or SSL, which is working perfectly,

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM