我需要在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);
答案 0 :(得分:4)
使用wget或ndk是个坏主意:直接转到java
并使用HttpClient
制作帖子请求:可以找到示例here。
响应将包含您的数据,可以保存到文件中。
此外,您可以将其置于异步任务中,进度监控:分配像Curl ou wget这样的外部进程应该保留为最后一次机会(与服务器通信显然不是)