2014-10-14 3 views
0

Я новичок в веб-сервисах oData. Я хотел бы получить и заполнить следующий вывод на мобильной платформе. Я мог бы заполнить следующие данные url на мобильной платформе http://services.odata.org/V4/Northwind/Northwind.svc/Customers. Однако, как только я начал заниматься другим упражнением. Я застрял со следующим выходом odata. Как я могу получить доступ к свойствам, таким как имя или описание?Доступ к объекту OData

PUT /OData/OData.svc/Products(1) HTTP/1.1 Host: services.odata.org DataServiceVersion: 
    1.0 MaxDataServiceVersion: 2.0 accept: application/atom+xml 
    content-type: application/atom+xml Content-Length: 1181 
<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<Entry xml:base="http://services.odata.org/OData/OData.svc/" 
    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"> 
    <id>http://services.odata.org/OData/OData.svc/Products(1)</id> 
    <title type="text"></title> 
    <updated>2010-02-28T10:23:02Z</updated> 
    <author> 
    <name /> 
    </author> 
    <Link rel="edit" title="Product" href="Products(1)" /> 
    <category term="DataServiceProviderDemo.Product" 
     scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> 
    <content type="application/xml"> 
    <m:properties> 
     <d:ID m:type="Edm.Int32">1</d:ID> 
     <d:Name>Milk</d:Name> 
     <d:Description>Low fat milk</d:Description> 
     <d:ReleaseDate m:type="Edm.DateTime">1995-10-21T00:00:00</d:ReleaseDate> 
     <d:DiscontinuedDate m:type="Edm.DateTime" m:null="true" /> 
     <d:Rating m:type="Edm.Int32">4</d:Rating> 
     <d:Price m:type="Edm.Decimal">4.5</d:Price> 
    </m:properties> 
    </content> 
</Entry> 
+1

Ваша проблема, что вы хотите обновить объект в services.odata.org/v4/odata/ odata.svc/с полезной нагрузкой атома и получить ошибку? Что происходит с доступом к свойствам? Похоже на другой вопрос.Не могли бы вы подробнее рассказать о своем сценарии и проблеме, с которой вы столкнулись? :) –

+0

Я хотел бы получить ID, Название, Описание, Выпуск, Discontunie, Рейтинг, Цена собственности. – casillas

+1

Причина, по которой я был смущен, заключается в том, что HTTP-глагол «PUT» в выведенном вами выводе. ОК, теперь я думаю, что знаю, как ответить :) –

ответ

2

Есть несколько способов доступа конкретных свойств, так как есть два вида свойств на сущности: свойство не-навигации и навигация собственность.

Не навигационное свойство является либо свойством примитивного типа, либо набором свойств примитивного типа, и сложным типом, и сложным типом, либо свойством потока. Когда вы запрашиваете набор сущностей или конкретный объект, значения свойств неавигации по умолчанию встроены в полезную нагрузку объекта:

например. ID, Name, Description и т.д., рядный при запросе:

GET http://services.odata.org/v4/odata/odata.svc/Products 

Если вы хотите выбрать свойства, которые нужны, вы можете использовать опцию $select запроса. Например.

GET http://services.odata.org/v4/odata/odata.svc/Products?$select=ID,Name 

Добавляя такой запрос, вы найдете только те свойства, которые необходимы встроенной полезной нагрузке.

Если вы хотите получить доступ только к значению свойства, вы должны добавить имя свойства как сегмент к URL-адресу запроса в одно целое . Например.

GET http://services.odata.org/v4/odata/odata.svc/Products(1)/ID 

Существует еще один вид собственности: свойства навигации. Они являются либо свойством типа объекта, либо набором свойств типа сущности. Свойства навигации описывают взаимосвязь между различными объектами службы. Примером является свойство навигации Categories объекта Product.

Свойства навигации по умолчанию не показаны в строке полезной нагрузки объекта. Для того, чтобы включить их в линии, опция $expand запроса должна быть использована:

GET http://services.odata.org/v4/odata/odata.svc/Products?$expand=Categories 

Если вы хотите получить доступ только навигационное свойства, запрос URL похож как для несудоходных свойств:

GET http://services.odata.org/v4/odata/odata.svc/Products(1)/Categories 

чтобы узнать больше о том, как оформить различные запросы OData для различных сценариев и то, что конвенции URL есть следующие материалы полезны:

учебников по OData.org: http://www.odata.org/getting-started/basic-tutorial/ (базовые), http://www.odata.org/getting-started/advanced-tutorial/ (продвинутый).

URL-адрес условность спецификации из OData V4: http://docs.oasis-open.org/odata/odata/v4.0/os/part2-url-conventions/odata-v4.0-os-part2-url-conventions.html

Протокол спецификации из OData V4: http://docs.oasis-open.org/odata/odata/v4.0/os/part1-protocol/odata-v4.0-os-part1-protocol.html

+0

Удивительный! Большой ответ в деталях. Большое спасибо Yi Ding. – casillas

+0

Привет, у вас есть представление о следующем вопросе: http://stackoverflow.com/questions/26392033/odata-client-returns-null – casillas