2017-07-07 3 views
0

Je suis en train de mettre à jour les champs url de mes documents Solr mais je reçois ci-dessous erreurSolr: obtenir l'erreur sur le champ url pendant la mise à jour

HTTP Error 400: Bad Request

Je pense qu'il est à cause d'un champ url

image_new_path = https://aaa.com/bbb/posts/post_fta6cueqq1497926075564.jpeg 
req = urllib2.Request(url=solrPath + '/update/json?commit=true', data='[{"id":"' + docs['id'] + '","image":{"set":'+image_new_path+'}}]') 

Y a-t-il un caractère spécial que je dois changer? Si oui lequel et comment?

erreur Solr:

RequestHandlerBase 

org.apache.solr.common.SolrException: Cannot parse provided JSON: Expected ',​' or '}': char=:,​position=41 BEFORE='[{"id":"189",​"image":{"set":https:' AFTER='//aaa.com/bbb/user' 

Répondre

0

Le problème est ":" je dois ajouter '\' avant ':' pour le faire fonctionner. Le chemin de l'image devient alors

https\://aaa/bbb 
0

Vous êtes absent "" autour de votre valeur image_new_path, vous pouvez résoudre ce problème en ajoutant "" autour:

.. {"set":"'+image_new_path+'"}} 

.. mais vous ne devriez pas écrire JSON manuellement en concaténant des valeurs vous-même, car vous devrez prendre soin de respecter toutes les règles de JSON en matière d'échappement, etc.

Utilisez le support intégré en python pour JSON dans le module json à la place:

import json 

.. 

.. data=json.dumps([{'id': docs['id'], 'image': {'set': image_new_path}}]) 

Ou peut-être mieux encore, utiliser une bibliothèque Solr tels que pysolr ou mysolr.