4

httpsサーバーに対して申し立てを行い、サーバーから返送されるデータ(テキスト、ビデオファイル、または画像ファイル)をAndroidアプリ内にダウンロードする必要があります。

suseLinuxおよび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を使用し、証明書のチェックを回避するためにいくつかのクラスを追加するソリューションを見つけました。私はこの記事に従います

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);
4

1 に答える 1

4

そのためにwgetまたはndkを使用することは悪い考えです:直接行って投稿リクエストを作成するために使用してください:例はここにjavaありますHttpClient

応答にはデータが含まれ、ファイルに保存する準備ができています。

さらに、非同期タスク、進行状況の監視に入れることができます:Curl ou wgetのような外部プロセスをフォークすることは最後のチャンスとして保持する必要があります(サーバーとの通信は明らかにそうではありません)

于 2012-07-24T09:51:08.270 に答える