适用于Android的Wget或类似内容

时间:2012-07-24 09:47:20

标签: android curl https wget

我需要在https服务器上提出申请,并在我的Android应用程序中下载服务器发回的数据(文本,视频文件或图像文件)。

它在suse Linux和wget或curl的终端中工作正常。请求具有以下结构:

wget --post-data "token=xxxx&option1=1&option2=4&File=video" https://api.serverx.com/ --no-check-certificate

我的问题是Android中是否有任何wget或类似工作,或者我如何以其他方式进行此类请求。

我在NDK中读到了关于实现wget的内容,但我想知道您的经验或建议。 感谢

解决方案

使用NDK移植Wget太复杂了。 经过一些研究,我找到了一个使用DefaultHttpClient的解决方案,并添加了几个类以避免检查证书。我关注this article

SchemeRegistry schemeRegistry = new SchemeRegistry();
    schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
    schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(), 443));

    HttpParams params = new BasicHttpParams();
    params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 30);
    params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(30));
    params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false);
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);

    ClientConnectionManager cm = new SingleClientConnManager(params, schemeRegistry);
    DefaultHttpClient httpClient = new DefaultHttpClient(cm, params);

1 个答案:

答案 0 :(得分:4)

使用wget或ndk是个坏主意:直接转到java并使用HttpClient制作帖子请求:可以找到示例here

响应将包含您的数据,可以保存到文件中。

此外,您可以将其置于异步任务中,进度监控:分配像Curl ou wget这样的外部进程应该保留为最后一次机会(与服务器通信显然不是)