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

    J'utilise SodaClient pour obtenir des informations à partir d'un ensemble de données privé dans Socrata en utilisant le code suivant.De grosses requêtes soql (plus de 5000 caractères) à socrata ne supportent pas

    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; 
    

    Le problème est que parfois le « searchCondition » peut être très grand mot à dire plus de 5000 caractères, le Sodaclient retourne une erreur.

    Comment envoyer des requêtes soql volumineuses à socrata? J'ai également essayé d'obtenir des informations en utilisant des appels reposants méthode httpclient, mais il montre également des erreurs comme.

    Une erreur s'est produite lors de l'envoi de la demande. Le serveur a commis une violation de protocole . Section = ResponseStatusLine

    Répondre

    0

    Malheureusement, la longueur des URL de requête HTTP, qui SodaClient utilise sous les couvertures pour faire ses demandes API RESTful, est limitée à la fois par la spécification HTTP/1.1 et aussi par des limites pratiques en eux-mêmes des bibliothèques des HTTP. Voici un autre post de StackOverflow avec plus de détails: What is the maximum length of a URL in different browsers?

    Que mettez-vous dans votre condition de recherche? Peut-être que je peux vous aider à trouver une manière plus optimisée d'émettre votre requête.

    +0

    Il existe une colonne 'Catégorie' qui possède 160 valeurs distinctives. Pour rechercher ceci j'utilise la requête suivante – Nachikethas

    +0

    Il y a une colonne 'Catégorie' qui a 160 valeurs distinguées. Pour rechercher ce champ avec d'autres colonnes, j'utilise la requête suivante https: //host/resource/xxxx-xxx.json? $ Where = (Category = 'value1' OU Category = 'value2' OU Category = 'value3') AND SubCatagory = 'valeur1'. S'il vous plaît noter que je ne peux pas utiliser la fonctionnalité IN (..) dans cet ensemble de données parce que c'est un dérivé, comme vous l'avez dit plus tôt pour ma question. Donc je dois relayer sur la méthode OR. – Nachikethas

     Questions connexes

    • Aucun problème connexe^_^