jobs.get(jobId,ProjectId)中的HttpError 400,即使具有正确的值

时间:2012-12-03 16:05:18

标签: google-app-engine google-bigquery

当我调用jobs.get(jobId,ProjectID)时; 我明白了:

  

“code”:400,“errors”:[{   “域名”:“全球”,   “message”:“项目ID无效'My_Project_ID:job_6c2e8cc358ad42d2ad55ef266d342b68'。   项目ID必须包含6-63个小写字母,数字或短划线。 ID必须以。开头   一封信,可能不会以短划线结束。“,   “reason”:“invalid”}],“message”:“项目ID无效'My_Project_ID:job_6c2e8cc358ad42d2ad55ef266d342b68'。项目ID必须   包含6-63个小写字母,数字或短划线。 ID必须以。开头   一封信,可能不会以短划线结束。“

(我用“My_Project_ID”切换了projectId)

如果我在google开发者指南的“试用”部分中使用了确切的projectID和jobID 在here

我按预期恢复了工作!

如果projectId或jobId不对,那么它也不会在google开发者网站上运行。 什么可能导致这种行为?

2 个答案:

答案 0 :(得分:2)

您似乎将完全限定的作业ID作为项目ID传递。在上面提到的示例中,“My_Project_ID”是项目ID,“job_6c2e8cc358ad42d2ad55ef266d342b68”是作业ID,但看起来您正在传递完整字符串“My_Project_ID:job_6c2e8cc358ad42d2ad55ef266d342b68”作为作业ID。

另请注意,参数顺序为(projectId,jobId),而不是(jobId,projectId)。

尝试调用jobs.get(“My_Project_ID”,“job_6c2e8cc358ad42d2ad55ef266d342b68”),看看是否有效。

答案 1 :(得分:0)

尝试执行以下操作时出现此问题:

jobs()。get(projectId,job.getId())。execute()。getStatus()。getState();

似乎像job.getId()返回一个String,它包含ProjectId和JobId(并包含Job-Ids中不允许的字符)。 解决方案是调用job.getJobReference()。getJobId()。

jobs()。get(projectId,job.getJobReference()。getJobId())。execute()。getStatus()。getState();