传递给`blobstoreService.createUploadUrl`的内容因此由我的端点方法处理

时间:2014-05-05 23:51:40

标签: java google-app-engine google-cloud-endpoints blobstore

我的问题与getting blobstore to callback to endpoint method类似,但他/她没有回复。我实际上也写了我的代码。我创建了我的回调网址

BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
String url = blobstoreService.createUploadUrl("/loadImages");

然后我创建了我的端点

@ApiMethod(name = "loadImages", httpMethod = HttpMethod.POST)
public void loadImages(javax.servlet.http.HttpServletRequest req) {
  //…. get blob key etc.
}

然后当blobstore进行回调调用时,我的服务器上出现错误:

No handlers matched this URL. (404)

有没有人知道传递给blobstoreService.createUploadUrl的内容,所以它由我的端点方法处理?

我也尝试将”/loadImages”更改为"/_ah/spi/com.company.package.ApiName.loadImages”,以便它看起来像其他路径,但这也不起作用。然后我尝试了"_ah/api/apiname/1/loadImages”:没有。

注意:我不是在寻找blobstore / endpoint的替代方案。当我使用简单的servlet接收回调时,它可以工作。但是servlet只会使我的其他端点代码变得贬值。

1 个答案:

答案 0 :(得分:1)

我担心你只能使用servlet来处理这种类型的回调。我一直在寻找几个小时的解决方案,并找到this topic

简而言之:

  

表单必须包含文件上载字段,并且表单的enctype必须包含   设置为 multipart / form-data 。 API ... 将重写的请求传递给您的应用程序   将路径指定为blob键。

     

由于端点没有(据我所知)接受 multipart / form-data   一个有效的编码,这将无法正常工作。您看到的错误消息是   因为Endpoint期待JSON。