谁给个AndroidHttpClient比较全面的例子啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谁给个AndroidHttpClient比较全面的例子啊相关的知识,希望对你有一定的参考价值。

谁给个androidHttpClient比较全面的例子啊刚接触Android和java,很多东西不懂啊,所以想找个例子照着搞搞网上搜了一些,好像都是DefaultHttpClient的例子我想找个AndroidHttpClient的例子,里面做好有Cookie,带XML的post请求。在此谢过<a apporig="69285" target="_blank" onclick="javascript:return redirectWrapped(this);" class="thirdAppLink" href="http://www.eoeandroid.com/forum.php?mod=redirect

参考技术A 。。。。。。。。 参考技术B 额········无语

Android:AndroidHttpClient - 如何设置超时?

【中文标题】Android:AndroidHttpClient - 如何设置超时?【英文标题】:Android: AndroidHttpClient - how to set timeout? 【发布时间】:2011-08-09 11:03:26 【问题描述】:

我已按照kuester2000's answer 的说明进行操作,但我的超时设置似乎不起作用。

try

    int timeout = 3000;
    URL myURL = //some valid URL

    AndroidHttpClient = AndroidHttpClient.newInstance("name");
    HttpGet httpGet = new HttpGet(myURL.toExternalForm());

    HttpParams httpParams = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpParams, timeout);
    HttpConnectionParams.setSoTimeout(httpParams, timeout);

    HttpResponse response = httpClient.execute(httpGet);

    //...

catch (SocketTimeoutException e)

    e.printStackTrace();

catch (ConnectTimeoutException e)

    e.printStackTrace();

catch (IOException e)

    e.printStackTrace();

//...

但是,超时值不会改变任何东西。

在我链接的答案中,它还说:

连接超时抛出“java.net.SocketTimeoutException: Socket is not connected”和socket timeout“java.net.SocketTimeoutException: The operation timed out”。

但我两个都没有。相反,我得到“org.apache.http.conn.ConnectTimeoutException: Connect to ... timed out”

那么有人可以帮助我吗?哪里错了?

【问题讨论】:

【参考方案1】:

您不要使用httpParams 参数,它们必须提供给HTTPClient。所以它不会像这样工作。在您链接的答案中,顺序是正确的!请尝试以下顺序:首先创建参数并将它们提供给 HTTPClient。

HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
HttpConnectionParams.setSoTimeout(httpParameters, 10000);

HttpClient client = new DefaultHttpClient(httpParameters);
HttpGet request = new HttpGet(url);

HttpResponse response = client.execute(request);

【讨论】:

感谢您的回答,我刚刚意识到我忘记插入 httpClient.setParams(httpParameters);,这是由 kuester2000 建议的。但是,它不适用于 AndroidHttpClient。是否可以像您那样使用 AndroidHttpClient 而不是 HttpClient? 你真的需要AndroidHTTPClient的功能吗?否则你可以简单地使用 DefaultHTTPClient。 其实,我真的不知道有什么区别......这可能意味着“不”,不是吗? 是的,也许,看看这个答案:***.com/questions/5135918/… 我确实做到了这一点,但“合理的默认设置”对我并没有真正的帮助。 ^^ 但是,它在“newInstance”方法的文档中说:“创建一个具有合理默认值的新 HttpClient(您可以更新)。”但我找不到更新它们的方法。【参考方案2】:

确实错过了将参数附加到我的 http 请求,但在我的示例中执行此操作的正确方法是

httpGet.setParams(httpParams);

在调用 httpClient.execute(httpGet) 之前。

刚刚添加了那行,它工作正常。

【讨论】:

【参考方案3】:

在客户端本身设置的另一个选项:

AndroidHttpClient client = AndroidHttpClient.newInstance("Client V/1.0");
HttpConnectionParams.setConnectionTimeout(this.client.getParams(), 3000);
HttpConnectionParams.setSoTimeout(this.client.getParams(), 5000);

这应该会导致那些特定的参数被设置...

HTH

【讨论】:

我喜欢这样。这里有更详细的解释:intertech.com/Blog/Post/…【参考方案4】:
            try 
                HttpGet httpGet = new HttpGet("your_uri/test.json");

                HttpParams httpParameters = new BasicHttpParams();
                // Set the timeout in milliseconds until a connection is established.
                // The default value is zero, that means the timeout is not used.
                int timeoutConnection = 5000;
                HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
                // Set the default socket timeout (SO_TIMEOUT)
                // in milliseconds which is the timeout for waiting for data.
                int timeoutSocket = 10000;
                HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);

                HttpClient httpclient = new DefaultHttpClient();

                httpGet.setParams(httpParameters);

                HttpResponse response = httpclient.execute(httpGet);

                HttpEntity entity = response.getEntity();

                BufferedReader br = null;

                if(entity != null) 
                    Log.i("read", "nube");

                    br = new BufferedReader(new InputStreamReader(entity.getContent()));

                 else 
                    Log.i("read", "local");

                    AssetManager am = getApplicationContext().getAssets();
                    InputStream is = am.open("test.json");

                    br = new BufferedReader(new InputStreamReader(is));
                

                String line;
                String texto = "";

                while ((line = br.readLine()) != null) 
                    texto += line;
                


             catch (IOException e) 
                e.printStackTrace();
            

【讨论】:

【参考方案5】:

阅读完之后,这是我直接使用默认客户端的参数的方法:

HttpClient client = new DefaultHttpClient();
HttpParams params = client.getParams();
HttpConnectionParams.setConnectionTimeout(params, 3000);
HttpConnectionParams.setSoTimeout(params, 3000);

原始版权归http://www.jayway.com/2009/03/17/configuring-timeout-with-apache-httpclient-40/

【讨论】:

以上是关于谁给个AndroidHttpClient比较全面的例子啊的主要内容,如果未能解决你的问题,请参考以下文章

谁给个tft液晶屏的读ram驱动程序

c#中LIST的应用实例谁给个加注释的!灰常感谢!

为啥我的iis老是一启动就说另一个进程正在使用此文件,谁给个法子啊

我想问下 JAVA中 如何读取PDF文件里面的内容 谁给个详细的 例子 谢谢

造梦西游3sol修改器我会改可是没有英文 有没有大号 谁给个 英文

谁给我一个让网站实现更换主题的方案