6

HTTPPOSTで次のパラメータを期待するリモートPHPサーバーに画像をアップロードする必要があります。

*$_POST['title']*
*$_POST['caption']*
*$_FILES['fileatt']*

インターネット検索のほとんどは、次のいずれかを示唆しています。

次のクラスをダウンロードし、MultiPartEntityを試してリクエストを送信してください。

apache-mime4j-0.5.jar
httpclient-4.0-beta2.jar
httpcore-4.0-beta3.jar
httpmime-4.0-beta2.jar

また

URLconnectionを使用して、マルチパートデータを自分で処理します。

ところで、私はjava.net(またはandroid.net)クラスではなくHttpClientクラスを使用することに熱心です。最終的に、AndroidソースコードからMultipartクラスをダウンロードし、代わりにプロジェクトで使用しました。

これは上記のどの方法でも実行できますが、これらが上記の目的を達成する唯一の方法であるかどうかを確認したいと思います。ドキュメントをざっと読んでFileEntityクラスを見つけましたが、動作させることができませんでした。

Androidアプリケーションでこれを行う正しい方法は何ですか?

ありがとう。

4

3 に答える 3

5

Androidソースには、内部マルチパートヘルパーライブラリが付属しているようです。この投稿を参照してください。一見すると、多くのパブリックAPI(咳咳、SoundPool、咳咳)よりも文書化されているので、開始するのにかなり良い場所であるか、ドロップインソリューションを使用するだけで問題ないはずです。

于 2010-04-01T20:45:41.173 に答える
4

たぶん、公式のAndroidグループに関するこの投稿が役に立ちます。男はmime4jを使用しています。

もう1つの役立つリソースは、ProAndroidブックのこの例です。

于 2010-04-20T10:41:11.547 に答える
3

私はまさにそれを実行して、HTMLページから投稿されたかのようにパラメーターを期待する画像ホスティングサーバー(phpでも実装)と対話します。

List<NameValuePair>は自分のキーと値を次のように作成します。

    List<NameValuePair> params = new ArrayList<NameValuePair>(2);
    params.add(new BasicNameValuePair(key1, value1));
    params.add(new BasicNameValuePair(key2, value2));

次に、それをHttpPostリクエストのHttpEntityプロパティを設定するhttpヘルパークラスに渡します。これが私のヘルパークラスから直接出たメソッドです:

public static HttpResponse Post(String url, List<NameValuePair> params, Context context)
{
    HttpResponse response = null;
    try
    {
        HttpPost request = new HttpPost();
        request.setURI(new URI(url));
        if(params != null)
            request.setEntity(new UrlEncodedFormEntity(params));
        HttpClient client = ((ApplicationEx)context.getApplicationContext()).getHttpClient();
        response = client.execute(request);
    }
    catch(Exception ex)
    {
        // log, etc
    }
    return response;
}
于 2010-03-30T12:41:04.670 に答える