【问题标题】:Creating a okhttp3 request body to create a folder in google drive创建 okhttp3 请求正文以在 google drive 中创建文件夹
【发布时间】:2020-07-08 17:12:16
【问题描述】:

在我的 android 应用程序中,我使用 okhttp:3.10.0 创建一个 httpclient 来向 google drive (REST V3) api 发出请求。我想在用户谷歌驱动器中创建一个文件夹。我读了google documentation 来创建一个文件夹。这个文档建议有这样的东西

File fileMetadata = new File();
fileMetadata.setName("Invoices");
fileMetadata.setMimeType("application/vnd.google-apps.folder");

我也经历过this question。我正在制作这样的okhttpclient

OkHttpClient client = new OkHttpClient();
                        RequestBody body = ????????
                        Request request = new Request.Builder()
                                .url("https://www.googleapis.com/drive/v3/files")
                                .addHeader("Authorization", String.format("Bearer %s", tokens[0]))
                                .post(body)
                                .build();

                        try {
                            Response response = client.newCall(request).execute();
                            String jsonBody = response.body().string();
                            Log.i(LOG_TAG, String.format("User Info Response %s", jsonBody));
                            return new JSONObject(jsonBody);
                        } catch (Exception exception) {
                            Log.w(LOG_TAG, exception);
                        }
                        return null;

我正在尝试使用 json 对象,但它没有转换为请求正文,因为它无法解析同伴

import okhttp3.MediaType.Companion.toMediaTypeOrNull;
import okhttp3.RequestBody.Companion.toRequestBody;

JSONObject jsonObject = new JSONObject();
                        try {
                            jsonObject.put("title", "Ancd test");
                            jsonObject.put("mimeType", "application/vnd.google-apps.folder");
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                        String body = jsonObject.toString().toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull());

现在我不确定如何在请求正文中添加该元数据。有人知道怎么做吗?

【问题讨论】:

    标签: java android google-drive-api okhttp


    【解决方案1】:
    MediaType mediaType = MediaType.parse("application/json; charset=utf-8");                
    RequestBody body = RequestBody.create(jsonObject.toString(), mediaType);
    

    【讨论】:

    • @feanor07 楼主已点赞并接受我的回答为最佳答案。
    • 那么对不起我的错;通常,我希望看到答案更深入,而不仅仅是代码本身;大家开心就好啦!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    相关资源
    最近更新 更多