c#
  • asp.net
  • soql
  • socrata
  • soda
  • 2015-08-14 6 views 0 likes 
    0

    Я использую SodaClient для получения информации из частного набора данных в Сократе, используя следующий код.Большие запросы soql (более 5000 символов) для socrata не поддерживают

    var records = (dynamic)null; 
    
    string searchCondition = "column1='something'AND (column2='something' OR 'somethingelse') "; 
    
    var clientExport = new SodaClient("host name", "app token", "username","password"); 
    
    var dataset = clientExport.GetResource<modelname>("resourceid"); 
    var offset = 0; 
    var limit = 1000; 
    
    var soql = new SoqlQuery().Where(searchCondition).Offset(offset).Limit(limit); 
    records = dataset.Query<modelname>(soql).ToList(); 
    
    return records; 
    

    Проблема заключается в том, что иногда «searchCondition» может быть очень большим, скажем более 5000 символов, то Sodaclient возвращается сообщение об ошибке.

    Как отправить большие запросы soql в socrata? Я также попытался получить информацию с помощью метода callclients restful calls, но он также показывал такие ошибки.

    Произошла ошибка при отправке запроса. Сервер совершил нарушение протокола . Раздел = ResponseStatusLine

    ответ

    0

    К сожалению, длина URL-адрес HTTP-запроса, который использует SodaClient под крышкой, чтобы сделать его RESTful запросов API, ограничен как по HTTP/1.1 спецификациям, а также практическими пределами, в HTTP-сами библиотеки. Вот еще одна статья StackOverflow с более подробной информацией: What is the maximum length of a URL in different browsers?

    Что вы размещаете в вашем поиске? Может быть, я могу помочь вам придумать более оптимизированный способ опубликования вашего запроса.

    +0

    Существует столбец «Категория», который имеет 160 выдающихся значений. Для поиска этого я использую следующий запрос – Nachikethas

    +0

    Существует столбец «Категория», который имеет 160 выделенных значений. Чтобы искать это поле вместе с другими столбцами, я использую следующий запрос: https: //host/resource/xxxx-xxx.json? $ Where = (Category = 'value1' OR Category = 'value2' OR Category = 'value3') AND SubCatagory = 'value1'. Обратите внимание, что я не могу использовать функциональность IN (..) в этом наборе данных, потому что он является производным, как вы сказали ранее для моего вопроса. Поэтому мне приходится ретранслировать по методу OR. – Nachikethas

     Смежные вопросы

    • Нет связанных вопросов^_^