我正在尝试实现一个odata消费者,特别是现在与批处理操作和更改集相关,在odata documentation基本上加载到我用作基础的此样本多部分批处理之后。
但是,当我实际运行此批处理代码(例如通过fiddler请求构建器)更新了我自己的实体路径等时,我收到以下错误:
处理批量请求时出错。在 每个操作的开始,恰好两个 标题需要指定: '内容类型'和 “内容传输编码”。确保 这些标题存在并具有 正确的价值观。
如果我从更改集中删除了Content-ID,则更改集可以正常工作,但显然后面的操作不再有效,因为它们引用了此Content-ID。
我尝试将Content-ID标头移出更改请求multipart .. part标头,并转移到实际的部件有效负载请求标头中,即:
--changeset(77162fcd-b8da-41ac-a9f8-9357efbbd621)
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 1
POST /service.svc/Customers HTTP/1.1
Host: host
Content-Type: application/atom+xml;type=entry
Content-Length: ###
<AtomPub representation of a new Customer>
变为
--changeset(77162fcd-b8da-41ac-a9f8-9357efbbd621)
Content-Type: application/http
Content-Transfer-Encoding: binary
POST /service.svc/Customers HTTP/1.1
Host: host
Content-Type: application/atom+xml;type=entry
Content-Length: ###
Content-ID: 1
再次,这不再抱怨只有标题的更改集,但仍然是后面的引用内容标识失败
HTTP 404,找不到段'$ 1'的资源
引用此content-id的请求部分如下所示:
--changeset_7448d3fc-39f6-49bb-b822-30fa4a1676ce
Content-Type: application/http
Content-Transfer-Encoding: binary
POST http://example.org/test.svc/$1/$links/Resources HTTP/1.1
Content-Type: application/json
.. json ..
假设http://example.org/test.svc是服务根目录。
文档内部请求位置的格式不是很清楚,因此路径引用可能不正确。
希望有人能更好地理解这方面,并提前建议,并提出建议。
斯蒂芬。
答案 0 :(得分:0)
如果操作不是POST,那么如果以这种方式操作就不能引用变更集请求,这从只有POST方法确实需要这个引用的方面才有意义,但是对于需要这种分支逻辑。
但重要的是,引用Content-ID时的路径不应该是绝对的,而应该是:
POST $1/$links/Resources HTTP/1.1
Content-Type: application/json