Salesforce Apex Google Drive API正在使用mimeType" application / json"

时间:2017-03-31 03:08:12

标签: google-drive-api salesforce apex

尝试在顶点创建一个功能,在Salesforce中创建新记录时会创建Google云端硬盘文件夹。

我已经设法验证并处理GET请求就好了。我的问题是关于POST请求。下面的代码应该创建一个文件夹,其标签在"标题"参数。脚本执行,而是创建一个没有标签的无扩展名文件。

public void getDriveFiles(HttpResponse authResponse) {
    http h = new Http();
    Httprequest req = new HttpRequest();
    HttpResponse res = new HttpResponse();      

    Map<String, Object> responseObject = (Map<String, Object>) JSON.deserializeUntyped(authResponse.getBody());

    req.setEndpoint('https://www.googleapis.com/upload/drive/v2/files');
    req.setMethod('POST');
    req.setHeader('Content-type', 'application/json');
    req.setHeader('Authorization', 'Bearer '+responseObject.get('access_token'));

    String jsonData = '{"title":"NewFolder", "mimeType":"application/vnd.google-apps.folder"}';
    req.setBody(jsonData);
    res = h.send(req);

    system.debug('Response ='+ res.getBody() +' '+ res.getStatusCode());
}

我觉得这是我的要求,但我不知道如何解决这个问题。

Output from Debug

1 个答案:

答案 0 :(得分:0)

您使用了错误的端点。而不是file端点,您将发布到content端点。

所以

  

req.setEndpoint( 'https://www.googleapis.com/upload/drive/v2/files');

应该是(对于v2 API)

  

req.setEndpoint( 'https://www.googleapis.com/drive/v2/files');

或(对于v3 API)

  

req.setEndpoint( 'https://www.googleapis.com/drive/v3/files');

如果你使用v3(你可能应该这样做),你的json应该改变

  

String jsonData ='{“name”:“NewFolder”,“mimeType”:“application / vnd.google-apps.folder”}';