Android - 使用Https失败的GET请求 - 不确定原因

时间:2014-04-24 05:00:22

标签: java android https httpurlconnection ioexception

下午好,

我一直在使用Android的HttpURLConnection对象向各种网站发出Http GET和POST请求几周,直到现在都没有遇到任何问题。

我最近被要求使用Https而不是Http向服务器发出GET请求。

我认为我需要做的就是将使用中的对象更改为HttpsURLConnection对象,以便访问该页面。

我可以验证我能够从桌面和移动浏览器访问该页面。 页面的输出只是文本 - 纯文本格式的项目列表(在服务器上用php生成)。

但是当我尝试使用我的Android应用程序下载信息时,我会在下面指定的位置出现IO异常错误(请参阅下面的代码块)。

下面的代码段在另一个线程中运行。它设法连接和设置连接参数,但在尝试打开输入流时失败。

不幸的是,错误信息对我来说并不重要。它只包含网站的网址,没有其他信息。

我的想法是:

a)我在使用Https连接时遗漏了一些东西 - 这里的任何提示都会很棒。 b)该网站正在采取与我过去所连接的所有其他基于Http的网站不同的东西 - 由于这个特定网站的性质,这不太可能。这里有任何关于可能阻止GET请求通过的可能性的建议。

还有待尝试:我计划尝试使用一些不同的技术从其他位置连接GET请求,以确保它不是我在我做的事情中做的事情Java代码。

希望很清楚。

谢谢, 马特

 @Override
    public void run() 
    {
    String response = null;
    URL url;
    try
    {
        url = new URL(urlstr);
        HttpsURLConnection con;
        try
        {
            con = (HttpsURLConnection) url.openConnection();
            try 
            {
                con.setRequestMethod("GET");
                con.setReadTimeout(10000);
                con.setConnectTimeout(3000);
                con.setRequestProperty("User-Agent", "Mozilla/5.0");
                //this is where we fall over - after this line....it raises an IOException - see below for details.
                BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));

                while(true)
                {
                    int ch = in.read();
                    if(ch==-1)
                    {
                        break;
                    }
                    response = response + Character.toString((char) ch);
                }
                in.close();
            } 
            catch (ProtocolException e) 
            {
            }
        } 
        catch (IOException e)
        {
            //IO Exception is raised.  The error message (e.getMessage()) is simply the url string...not very helpful.
        }
    } 
    catch (MalformedURLException e1)
    {
    }
    if(response!=null)
    {
        //do stuff with response...
    }
}

这是堆栈跟踪:(我可以验证文件确实存在!)

04-24 15:16:22.854: W/System.err(12830): java.io.FileNotFoundException: https://         (IVE REMOVED THE WEBSITE FOR PRIVACY PURPOSES FOR NOW)
04-24 15:16:22.854: W/System.err(12830):    at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186)
04-24 15:16:22.854: W/System.err(12830):    at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:271)
04-24 15:16:22.854: W/System.err(12830):    at com.lloydm.app.MainActivity$MainListing.run(MainActivity.java:1733)
04-24 15:16:22.854: W/System.err(12830):    at java.lang.Thread.run(Thread.java:856)

(重新格式化堆栈跟踪)

0 个答案:

没有答案