OData Simple.OData.Client V3 发送其他请求
OData Simple.OData.Client V3 sends other request
我正在使用 Simple.OData.Client V3 从远程托管的 odata 服务获取一些数据。这是我正在做的,但由于未知原因,odata 客户端正在发送另一个请求
OData 客户端初始化
public ODataClient CreateClient(bool isPost = true)
{
var uri = new Uri(ServiceAddress);
return new ODataClient(new ODataClientSettings(uri)
{
Credentials = new NetworkCredential(UserName, Password),
PayloadFormat = !isPost ? ODataPayloadFormat.Json : ODataPayloadFormat.Atom
});
}
获取请求
public async Task<GetCustomersResponse> GetCustomers()
{
var client = CreateClient(false);
var x = ODataDynamic.Expression;
var response = await client.For("Catalog_Контрагенты").Top(10).FindEntriesAsync();
var raw = JsonConvert.SerializeObject(response).ToString();
var obj = JsonConvert.DeserializeObject<List<CustomerItem>>(raw);
return new GetCustomersResponse()
{
Items = obj
};
}
而不是发送
http://odataservice/Catalog_Контрагенты
发送
http://odataservice/Catalog_АвансовыйОтчетПрисоединенныеФайлы
我也试过用这种方式发送请求,它工作正常
public async Task<GetCustomersResponse> GetCustomers()
{
var client = CreateClient(false);
var response = await client.FindEntriesAsync("Catalog_Контрагенты?$top=10");
var raw = JsonConvert.SerializeObject(response).ToString();
var obj = JsonConvert.DeserializeObject<List<CustomerItem>>(raw);
return new GetCustomersResponse()
{
Items = obj
};
}
但我不明白之前的样本有什么问题。
当我尝试更新或添加新客户时发生同样的事情
它发送其他请求。
更新 1
这是Fidller发送错误请求时的请求
GET http://hostname/odata/standard.odata/Catalog_%D0%90%D0%B2%D0%B0%D0%BD%D1%81%D0%BE%D0%B2%D1%8B%D0%B9%D0%9E%D1%82%D1%87%D0%B5%D1%82%D0%9F%D1%80%D0%B8%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%D0%A4%D0%B0%D0%B9%D0%BB%D1%8B?$top=10 HTTP/1.1
Accept: application/json, application/xml, application/text
Prefer: return-no-content
Authorization: Basic d2FuZGlvOjEyMzQ=
Host: hostname
回应
HTTP/1.1 200 OK
Content-Length: 185
Content-Type: application/json;charset=utf-8
Server: Microsoft-IIS/7.5
DataServiceVersion: 3.0
X-Powered-By: ASP.NET
Date: Thu, 05 May 2016 06:58:27 GMT
{
"odata.metadata": "http://hostname/odata/standard.odata/$metadata#Catalog_АвансовыйОтчетПрисоединенныеФайлы",
"value": []
}
这是正确工作的请求
GET http://hostname/odata/standard.odata/Catalog_%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%B3%D0%B5%D0%BD%D1%82%D1%8B?$top=10 HTTP/1.1
Accept: application/json, application/xml, application/text
Prefer: return-no-content
Authorization: Basic d2FuZGlvOjEyMzQ=
Host: hostname
回应
HTTP/1.1 200 OK
Content-Length: 28626
Content-Type: application/json;charset=utf-8
Server: Microsoft-IIS/7.5
DataServiceVersion: 3.0
X-Powered-By: ASP.NET
Date: Thu, 05 May 2016 09:40:21 GMT
{
"odata.metadata": "http://hostname/odata/standard.odata/$metadata#Catalog_Контрагенты",
"value": [{
"Ref_Key": "f9210ba9-cbf8-11e1-8023-00155d01bf09",
"DataVersion": "AAAAAAAki8I=",
"DeletionMark": false,
"Parent_Key": "ca28c1de-af9e-11e1-a90b-00155d01bf04",
"IsFolder": false,
"Code": "002879 ",
"Description": "შპს პრაიმ ქემიქალს1",
"ИНН": "404867569",
"КодПоОКПО": "",
"КПП": "",
"НаименованиеПолное": "შპს პრაიმ ქემიქალს",
"БанковскийСчетПоУмолчанию_Key": "00000000-0000-0000-0000-000000000000",
"ДоговорПоУмолчанию_Key": "f9210baa-cbf8-11e1-8023-00155d01bf09",
"КонтактноеЛицо_Key": "00000000-0000-0000-0000-000000000000",
"ФизическоеЛицо_Key": "00000000-0000-0000-0000-000000000000",
"СчетУчетаРасчетовСПокупателем_Key": "552c3f13-4ae6-48a3-a9e2-5ce660958242",
"СчетУчетаАвансовПокупателя_Key": "d38b5a6a-be8b-4c2b-8702-57ea8e02e3e6",
"СчетУчетаРасчетовСПоставщиком_Key": "9d195613-e9b0-4dd9-959d-72fd653ac7fc",
"СчетУчетаАвансовПоставщику_Key": "5060faf9-602e-478c-be88-7145c6f48586",
"Ответственный_Key": "00000000-0000-0000-0000-000000000000",
"Комментарий": "",
"ВестиРасчетыПоДоговорам": true,
"ВестиРасчетыПоДокументам": true,
"ВестиРасчетыПоЗаказам": true,
"ВестиУчетОплатыПоСчетам": true,
"ЮрФизЛицо": "ЮрЛицо",
"АдресЭП": "",
"Нерезидент": false,
"КонтактнаяИнформация": [],
"ДополнительныеРеквизиты": [],
"Parent@navigationLinkUrl": "Catalog_Контрагенты(guid'f9210ba9-cbf8-11e1-8023-00155d01bf09')/Parent",
"ДоговорПоУмолчанию@navigationLinkUrl": "Catalog_Контрагенты(guid'f9210ba9-cbf8-11e1-8023-00155d01bf09')/ДоговорПоУмолчанию",
"СчетУчетаРасчетовСПокупателем@navigationLinkUrl": "Catalog_Контрагенты(guid'f9210ba9-cbf8-11e1-8023-00155d01bf09')/СчетУчетаРасчетовСПокупателем",
"СчетУчетаАвансовПокупателя@navigationLinkUrl": "Catalog_Контрагенты(guid'f9210ba9-cbf8-11e1-8023-00155d01bf09')/СчетУчетаАвансовПокупателя",
"СчетУчетаРасчетовСПоставщиком@navigationLinkUrl": "Catalog_Контрагенты(guid'f9210ba9-cbf8-11e1-8023-00155d01bf09')/СчетУчетаРасчетовСПоставщиком",
"СчетУчетаАвансовПоставщику@navigationLinkUrl": "Catalog_Контрагенты(guid'f9210ba9-cbf8-11e1-8023-00155d01bf09')/СчетУчетаАвансовПоставщику"
}
Simple.OData.Client 存在与非拉丁词相关的错误,将在适配器中修复。
我正在使用 Simple.OData.Client V3 从远程托管的 odata 服务获取一些数据。这是我正在做的,但由于未知原因,odata 客户端正在发送另一个请求
OData 客户端初始化
public ODataClient CreateClient(bool isPost = true)
{
var uri = new Uri(ServiceAddress);
return new ODataClient(new ODataClientSettings(uri)
{
Credentials = new NetworkCredential(UserName, Password),
PayloadFormat = !isPost ? ODataPayloadFormat.Json : ODataPayloadFormat.Atom
});
}
获取请求
public async Task<GetCustomersResponse> GetCustomers()
{
var client = CreateClient(false);
var x = ODataDynamic.Expression;
var response = await client.For("Catalog_Контрагенты").Top(10).FindEntriesAsync();
var raw = JsonConvert.SerializeObject(response).ToString();
var obj = JsonConvert.DeserializeObject<List<CustomerItem>>(raw);
return new GetCustomersResponse()
{
Items = obj
};
}
而不是发送
http://odataservice/Catalog_Контрагенты
发送
http://odataservice/Catalog_АвансовыйОтчетПрисоединенныеФайлы
我也试过用这种方式发送请求,它工作正常
public async Task<GetCustomersResponse> GetCustomers()
{
var client = CreateClient(false);
var response = await client.FindEntriesAsync("Catalog_Контрагенты?$top=10");
var raw = JsonConvert.SerializeObject(response).ToString();
var obj = JsonConvert.DeserializeObject<List<CustomerItem>>(raw);
return new GetCustomersResponse()
{
Items = obj
};
}
但我不明白之前的样本有什么问题。
当我尝试更新或添加新客户时发生同样的事情 它发送其他请求。
更新 1
这是Fidller发送错误请求时的请求
GET http://hostname/odata/standard.odata/Catalog_%D0%90%D0%B2%D0%B0%D0%BD%D1%81%D0%BE%D0%B2%D1%8B%D0%B9%D0%9E%D1%82%D1%87%D0%B5%D1%82%D0%9F%D1%80%D0%B8%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%D0%A4%D0%B0%D0%B9%D0%BB%D1%8B?$top=10 HTTP/1.1
Accept: application/json, application/xml, application/text
Prefer: return-no-content
Authorization: Basic d2FuZGlvOjEyMzQ=
Host: hostname
回应
HTTP/1.1 200 OK
Content-Length: 185
Content-Type: application/json;charset=utf-8
Server: Microsoft-IIS/7.5
DataServiceVersion: 3.0
X-Powered-By: ASP.NET
Date: Thu, 05 May 2016 06:58:27 GMT
{
"odata.metadata": "http://hostname/odata/standard.odata/$metadata#Catalog_АвансовыйОтчетПрисоединенныеФайлы",
"value": []
}
这是正确工作的请求
GET http://hostname/odata/standard.odata/Catalog_%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%B3%D0%B5%D0%BD%D1%82%D1%8B?$top=10 HTTP/1.1
Accept: application/json, application/xml, application/text
Prefer: return-no-content
Authorization: Basic d2FuZGlvOjEyMzQ=
Host: hostname
回应
HTTP/1.1 200 OK
Content-Length: 28626
Content-Type: application/json;charset=utf-8
Server: Microsoft-IIS/7.5
DataServiceVersion: 3.0
X-Powered-By: ASP.NET
Date: Thu, 05 May 2016 09:40:21 GMT
{
"odata.metadata": "http://hostname/odata/standard.odata/$metadata#Catalog_Контрагенты",
"value": [{
"Ref_Key": "f9210ba9-cbf8-11e1-8023-00155d01bf09",
"DataVersion": "AAAAAAAki8I=",
"DeletionMark": false,
"Parent_Key": "ca28c1de-af9e-11e1-a90b-00155d01bf04",
"IsFolder": false,
"Code": "002879 ",
"Description": "შპს პრაიმ ქემიქალს1",
"ИНН": "404867569",
"КодПоОКПО": "",
"КПП": "",
"НаименованиеПолное": "შპს პრაიმ ქემიქალს",
"БанковскийСчетПоУмолчанию_Key": "00000000-0000-0000-0000-000000000000",
"ДоговорПоУмолчанию_Key": "f9210baa-cbf8-11e1-8023-00155d01bf09",
"КонтактноеЛицо_Key": "00000000-0000-0000-0000-000000000000",
"ФизическоеЛицо_Key": "00000000-0000-0000-0000-000000000000",
"СчетУчетаРасчетовСПокупателем_Key": "552c3f13-4ae6-48a3-a9e2-5ce660958242",
"СчетУчетаАвансовПокупателя_Key": "d38b5a6a-be8b-4c2b-8702-57ea8e02e3e6",
"СчетУчетаРасчетовСПоставщиком_Key": "9d195613-e9b0-4dd9-959d-72fd653ac7fc",
"СчетУчетаАвансовПоставщику_Key": "5060faf9-602e-478c-be88-7145c6f48586",
"Ответственный_Key": "00000000-0000-0000-0000-000000000000",
"Комментарий": "",
"ВестиРасчетыПоДоговорам": true,
"ВестиРасчетыПоДокументам": true,
"ВестиРасчетыПоЗаказам": true,
"ВестиУчетОплатыПоСчетам": true,
"ЮрФизЛицо": "ЮрЛицо",
"АдресЭП": "",
"Нерезидент": false,
"КонтактнаяИнформация": [],
"ДополнительныеРеквизиты": [],
"Parent@navigationLinkUrl": "Catalog_Контрагенты(guid'f9210ba9-cbf8-11e1-8023-00155d01bf09')/Parent",
"ДоговорПоУмолчанию@navigationLinkUrl": "Catalog_Контрагенты(guid'f9210ba9-cbf8-11e1-8023-00155d01bf09')/ДоговорПоУмолчанию",
"СчетУчетаРасчетовСПокупателем@navigationLinkUrl": "Catalog_Контрагенты(guid'f9210ba9-cbf8-11e1-8023-00155d01bf09')/СчетУчетаРасчетовСПокупателем",
"СчетУчетаАвансовПокупателя@navigationLinkUrl": "Catalog_Контрагенты(guid'f9210ba9-cbf8-11e1-8023-00155d01bf09')/СчетУчетаАвансовПокупателя",
"СчетУчетаРасчетовСПоставщиком@navigationLinkUrl": "Catalog_Контрагенты(guid'f9210ba9-cbf8-11e1-8023-00155d01bf09')/СчетУчетаРасчетовСПоставщиком",
"СчетУчетаАвансовПоставщику@navigationLinkUrl": "Catalog_Контрагенты(guid'f9210ba9-cbf8-11e1-8023-00155d01bf09')/СчетУчетаАвансовПоставщику"
}
Simple.OData.Client 存在与非拉丁词相关的错误,将在适配器中修复。