0

我正在使用 Simple.OData.Client V3 从远程托管的 o​​data 服务获取一些数据。这是我正在做的,但由于未知原因,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

这是 Fiddler 发送错误请求时的请求

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')/СчетУчетаАвансовПоставщику"
}

元数据信息

4

1 回答 1

0

Simple.OData.Client 存在与非拉丁词相关的错误,将在适配器中修复。

这是这个问题odata 客户端发送错误的请求

于 2016-05-06T07:25:19.977 回答