Android 工作室:将图像上传到网络 API

Android studio: upload image to web API

我需要制作可以拍照的应用程序,将照片放在图像视图中,然后单击按钮上传到 Web API 服务。

我的问题是当我尝试上传照片时,代码出现下一个错误。

public void makeHTTPCall() {

    prgDialog.setMessage("Invoking php");
    StringEntity se = null;

    try{
        se = new StringEntity(params.toString());
        se.setContentType("application/json");
    }
    catch (UnsupportedEncodingException e){
        e.printStackTrace();
        return;
    }

    se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));

    AsyncHttpClient image = new AsyncHttpClient();

    image.post(uploadURL, se, new AsyncHttpResponseHandler()

这是我的错误。还有我的进口商品

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HTTP;

如你所见,我已经导入了 .RequestParams 和 .StringEntity

当我 运行 应用程序时,我有这个:

知道该怎么做吗?

您使用的是AsyncHttpClient,该库支持文件上传,方式简单。

image.post(uploadURL, se, new AsyncHttpResponseHandler()

'se' 不是 StringEntity 就像日志结果一样 'StringEntity 无法转换为 RequestParams。

image.post(targetUrl, params, Responsehandler(){});

你应该这样做。

这是使用 AsyncHttpClient 上传文件的示例代码:

RequestParam params = new RequestParams();
params.put("key1", "value1");
params.put("key2", "value2");

File imgFile = new File(filePath);
try {
      params.put("file",imgFile);
} catch(FileNotFoundException e) {}

AsyncHttpClient image = new AsyncHttpClient();
image.post(uploadURL, params, new AsyncHttpResponseHandler(){});