带有图像二进制文件

时间:2017-12-16 10:59:43

标签: android image rest post postman

我已经制作了一个RESTful网络服务,我目前正在Google App Engine上托管。当我使用Postman测试它时,Web服务运行良好,因为它提供了适当的JSON响应。当使用Postman时,我没有提供任何授权(图片1),我确实在身体中包含了一个图像作为二进制文件' (图2)。

但是,我不知道如何在Java中为Android应用程序发送等效请求。如何在请求中形成这样的请求并包含图像的二进制版本?

非常感谢任何帮助!

提前致谢!

Postman screenshot 1

Postman screenshot 2

以下是我目前的代码,但我没有得到我的网络服务的回复,所以我认为我的代码中做错了一些:

import android.app.DownloadManager;
import android.graphics.Bitmap;
import android.os.AsyncTask;

import java.io.File;
import java.io.IOException;
import java.net.URL;

import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

/**
 * Created by OliverM on 17/12/2017.
 */

public class Downloader extends AsyncTask<File, Integer, String> {
    protected void onPreExecute(){

    }

    protected String doInBackground(File... files) {
        OkHttpClient client = new OkHttpClient();

        RequestBody body = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("image", files[0].getName(), RequestBody.create(MediaType.parse("image/jpeg"), files[0]))
                .build();

        Request request = new Request.Builder()
                .url("https://----------------.appspot.com/classify")
                .post(body)
                .addHeader("Cache-Control", "no-cache")
                .build();

        try {
            Response response = client.newCall(request).execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "success";
    }

    protected void onProgressUpdate(Integer... progress) {
    }

    protected void onPostExecute(String result) {
    }
}

0 个答案:

没有答案