2015-05-28 46 views
0

發佈預測請求時發生錯誤,但發佈來自聯機界面(來自Google的API參考頁面)的相同請求時效果很好。 我還在Git存儲庫上發佈了一個新問題,但似乎沒有人會看到這些問題。谷歌多麼蹩腳!預測請求以「無效數據」錯誤結束

好吧我張貼預測的要求,這是這樣的:

var parameters = { 
auth: jwtClient, 
project: googleProjectID, 
id: 'interest_classifier', 
input: { 
csvInstance: ["country united states", "/location/location"] 
} 
}; 
return prediction.trainedmodels.predict(parameters, function(err, response) { 
if (err) { 
logger.info(null, "prediction err ", err); 
} 
logger.info(null, "response from predict ", response); 
return callback(null, response); 
}); 

而且我得到這個:

err { [Error: Input data invalid.] 
code: 400, 
errors: 
[ { domain: 'global', 
reason: 'invalidValue', 
message: 'Input data invalid.' } ] } 

澄清:我的訓練模型包含一個值和兩個文本特徵。 再次,當從在線工具(客戶端)運行它時,它運行良好,只有當我從我的node.js服務器運行它時,它是否失敗。

這是怎麼回事?有誰知道? 這可能是一些編碼問題?請求標頭?

編輯:

這是我的身份驗證方式:

var jwtClient = new google.auth.JWT('*****@developer.gserviceaccount.com', 'keys/key.pem', null, ['https://www.googleapis.com/auth/prediction']); 

    jwtClient.authorize(function(err, tokens) { 
    logger.info(null, "authorizing"); 
    if (err) { 
     logger.info(null, "error ", err); 
    } else { 
     return logger.info(null, "authenticated ", tokens); 
    } 
    }); 

回答

0

OK,

所以我已經挖成谷歌的代碼,並發現沒有正確記錄一個重要的細節。

我認爲這可能與其他使用此庫的人有關,而不僅僅是使用谷歌預測的人。

所以大多數請求需要在參數中包含一個項目ID,但在某些情況下,您還需要包括髮布數據(就像我的情況一樣)。 我試圖包括這篇文章的數據直接在參數如下所示:

var parameters = { 
auth: jwtClient, 
project: googleProjectID, 
id: 'interest_classifier', 
input: { 
csvInstance: ["country united states", "/location/location"] 
} 
}; 

現在我發現(這是沒有記錄!)是屬於post數據整體的一部分應該包括內部的「資源「字段,如下所示:

var parameters = { 
auth: jwtClient, 
project: googleProjectID, 
id: 'interest_classifier', 
resource:{ 
input: { 
csvInstance: ["country united states", "/location/location"] 
} 
} 
}; 

我相信這將與任何包含發佈數據的請求相關。 乾杯, 宜蘭

相關問題