6

我需要将图像上传到远程 PHP 服务器,该服务器需要 HTTPPOST 中的以下参数:

*$_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 并自己处理多部分数据。

顺便说一句,我热衷于使用 HttpClient 类而不是 java.net(或者是 android.net)类。最终,我从 Android 源代码中下载了 Multipart 类,并在我的项目中使用了它们。

虽然这可以通过上述任何一种方法来完成,但我想确定这些是否是实现上述目标的唯一方法。我浏览了文档并找到了一个FileEntity类,但我无法让它工作。

在 Android 应用程序中完成此操作的正确方法是什么?

谢谢。

4

3 回答 3

5

Android 源代码似乎带有一个内部多部分帮助程序库。看到这个帖子。快速浏览一下,它比大量公共 API(咳嗽、SoundPool、咳嗽咳嗽)有更好的文档记录,因此它应该是一个很好的起点,或者仅使用一个插入式解决方案也可以。

于 2010-04-01T20:45:41.173 回答
4

也许官方 Android 小组上的这篇文章会有所帮助。这家伙正在使用 mime4j。

另一个有用的资源可能是Pro Android 书中的这个示例。

于 2010-04-20T10:41:11.547 回答
3

我这样做是为了与期望参数的图像托管服务器(也在 php 中实现)进行交互,就好像它们是从 html 页面发布的一样。

我构建了一个List<NameValuePair>我的键和值,如下所示:

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

然后我将它传递给我的 http 助手类,该类设置我的 HttpPost 请求的 HttpEntity 属性。这是直接来自我的帮助类的方法:

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 回答