2016-12-06 165 views
0

我尝试使用UrlFetchApp从API获取信息。我在POSTMAN中尝试了GET和POST命令,它工作正常。在谷歌Apps脚本的第一个作品,第二个返回错误404UrlFetchApp返回错误404

function pru_demo() { 
// Log In. 
var options = { 
    'method' : 'POST', 
    'contentType': 'application/json' 
}; 
    var response=UrlFetchApp.fetch('https://demo.erpnext.com/api/method/[email protected]&pwd=demo', options); 
    var data=JSON.parse(response) 
    Logger.log(data.full_name); 

// Get Employes 
options = { 
// 'muteHttpExceptions' : true, 
    'method' : 'GET', 
    'contentType': 'application/json' 
}; 

response=UrlFetchApp.fetch('https://demo.erpnext.com/api/resource/Employee', options); 
Logger.log(response.getContentText()); 

    } 

回答

1

当您发送初始登录请求,服务器返回被用于会话cookie。您需要提取这些cookie并将它们设置为您的所有后续请求。

我修改您的代码以证明这一点:

function pru_demo() { 
    // Log In. 
    var options = { 
    'method' : 'POST', 
    'contentType': 'application/json' 
    }; 
    var response=UrlFetchApp.fetch('https://demo.erpnext.com/api/method/[email protected]&pwd=demo', options); 
    var data = JSON.parse(response) 
    Logger.log(data.full_name); 

    // Extract the cookies from the login response 
    var cookies = response.getAllHeaders()['Set-Cookie']; 
    var cookieParts = []; 
    for (var i = 0; i < cookies.length; i++) { 
    var arr = cookies[i].split('; '); 
    cookieParts.push(arr[0]); 
    } 

    // Create a new cookie to send with subsequent requests 
    var newCookie = cookieParts.join('; '); 
    Logger.log(newCookie); 

    // Get Employes 
    options = { 
    // 'muteHttpExceptions' : true, 
    'method' : 'GET', 
    'contentType': 'application/json', 
    'headers': { 
     'Cookie' : newCookie 
    } 
    }; 

    response = UrlFetchApp.fetch('https://demo.erpnext.com/api/resource/Employee', options); 
    Logger.log(response.getContentText()); 
} 
+0

曾任职完美。非常感谢。 –