使用原子格式的OData插入数据

时间:2014-07-11 09:12:26

标签: rest http odata sap

Odata对我来说是一件新事物,而我正试图深入了解它。所以我尝试使用原子格式的OData协议插入数据并使用rest客户端。所以我创建了以下http Post请求:

POST /HelloOdata/library.xsodata/books HTTP/1.1
Host: coe-he-55:8010
Authorization: Basic xxxxxxxxxxxxxxxxxxxxx
DataServiceVersion: 1.0
MaxDataServiceVersion: 2.0
accept: application/atom+xml
Content-Type: application/atom+xml
Cache-Control: no-cache
Postman-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

<?xml version="1.0" encoding="utf-8"?> 
<Entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
    xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
    xmlns="http://www.w3.org/2005/Atom">
  <title type="text">books</title> 
  <author> 
    <name /> 
  </author>
        <link href="books('Test_post')/Author" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Author" title="Author" type="application/atom+xml;type=entry"/>
  <category term="HelloOdata.library.booksType"
      scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> 
  <content type="application/xml"> 
    <m:properties> 
      <d:title>Test_post</d:title>
      <d:ISBN>ISBN_POST</d:ISBN>
      <d:editions>2</d:editions>
    </m:properties> 
  </content> 
</Entry>

并且作为回复我得到了:序列化资源的成员&#39;标题&#39;缺少价值。

我的桌子书只有三个属性,标题,ISBN和版本正是我尝试通过此语句插入的那些属性。所以,你知道它有什么不妥吗?

谢谢 巴勃罗

1 个答案:

答案 0 :(得分:0)

我发现了错误的位置。 令人难以置信的是,正确的xml请求是:

POST /HelloOdata/library.xsodata/books HTTP/1.1
Host: coe-he-55:8010
Authorization: Basic xxxxxxxxxxxxxxxxxxxxx
DataServiceVersion: 1.0
MaxDataServiceVersion: 2.0
accept: application/atom+xml
Content-Type: application/atom+xml
Cache-Control: no-cache
Postman-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

<?xml version="1.0" encoding="utf-8"?> 
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
    xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
    xmlns="http://www.w3.org/2005/Atom">
  <title type="text">books</title> 
  <author> 
    <name /> 
  </author>
  <category term="HelloOdata.library.booksType"
      scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> 
  <content type="application/xml"> 
    <m:properties> 
      <d:title>Test_post</d:title>
      <d:ISBN>ISBN_POST</d:ISBN>
      <d:editions>2</d:editions>
    </m:properties> 
  </content> 
</entry>
好吧,我也不得不接受这个部分:

 <link href="books('Test_post')/Author" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Author" title="Author" type="application/atom+xml;type=entry"/>

但这是第一次尝试之后的尝试,因为真正的问题是标签

<Entry> 

用E写而不是

<entry>

一旦我更改了它,Http请求就可以正常运行。

我在官方网站指南中看到了使用OData插入数据的示例: http://www.odata.org/documentation/odata-version-2-0/operations标签条目用大写字母写成。

谢谢! 巴勃罗