|
22 | 22 | # ----------------------------------------- |
23 | 23 | # Version 1.5 change notes (2020-09-08): |
24 | 24 | # - no changes |
| 25 | +# ----------------------------------------- |
| 26 | +# Version 1.6.4 change notes (2021-01-27): |
| 27 | +# - contains a bug fix that explicitly encodes all HTTP POST bodies as UTF-8. This caused problems if strings being sent as |
| 28 | +# part of a SPARQL query contained non-Latin characters. |
| 29 | + |
25 | 30 |
|
26 | 31 | import requests # best library to manage HTTP transactions |
27 | 32 | from bs4 import BeautifulSoup # web-scraping library |
@@ -237,7 +242,7 @@ def searchWikidataForQIdByOrcid(orcid, wikidataEndpointUrl, sparqlSleep): |
237 | 242 | results = [] |
238 | 243 | acceptMediaType = 'application/json' |
239 | 244 | # r = requests.get(wikidataEndpointUrl, params={'query' : query}, headers = generateHeaderDictionary(acceptMediaType)) |
240 | | - r = requests.post(wikidataEndpointUrl, data=query, headers = generateHeaderDictionary(acceptMediaType)) |
| 245 | + r = requests.post(wikidataEndpointUrl, data=query.encode('utf-8'), headers = generateHeaderDictionary(acceptMediaType)) |
241 | 246 | try: |
242 | 247 | data = r.json() |
243 | 248 | statements = data['results']['bindings'] |
@@ -317,7 +322,7 @@ def __init__(self, **kwargs): |
317 | 322 | # send a generic query and return a list of Q IDs |
318 | 323 | def generic_query(self, query): |
319 | 324 | # r = requests.get(self.endpoint, params={'query' : query}, headers=self.requestheader) |
320 | | - r = requests.post(self.endpoint, data=query, headers=self.requestheader) |
| 325 | + r = requests.post(self.endpoint, data=query.encode('utf-8'), headers=self.requestheader) |
321 | 326 | results_list = [] |
322 | 327 | try: |
323 | 328 | #if 1==1: # replace try: to let errors occur, also comment out the except: clause |
@@ -357,7 +362,7 @@ def single_property_values_for_item(self, qid): |
357 | 362 | }''' |
358 | 363 | #print(query) |
359 | 364 | # r = requests.get(self.endpoint, params={'query' : query}, headers=self.requestheader) |
360 | | - r = requests.post(self.endpoint, data=query, headers=self.requestheader) |
| 365 | + r = requests.post(self.endpoint, data=query.encode('utf-8'), headers=self.requestheader) |
361 | 366 | results_list = [] |
362 | 367 | try: |
363 | 368 | #if 1==1: # replace try: to let errors occur, also comment out the except: clause |
@@ -423,7 +428,7 @@ def labels_descriptions(self, qids): |
423 | 428 |
|
424 | 429 | results_list = [] |
425 | 430 | # r = requests.get(self.endpoint, params={'query' : query}, headers=self.requestheader) |
426 | | - r = requests.post(self.endpoint, data=query, headers=self.requestheader) |
| 431 | + r = requests.post(self.endpoint, data=query.encode('utf-8'), headers=self.requestheader) |
427 | 432 | data = r.json() |
428 | 433 | results = data['results']['bindings'] |
429 | 434 | for result in results: |
@@ -482,7 +487,7 @@ def search_statement(self, qids, reference_property_list): |
482 | 487 |
|
483 | 488 | results_list = [] |
484 | 489 | # r = requests.get(self.endpoint, params={'query' : query}, headers=self.requestheader) |
485 | | - r = requests.post(self.endpoint, data=query, headers=self.requestheader) |
| 490 | + r = requests.post(self.endpoint, data=query.encode('utf-8'), headers=self.requestheader) |
486 | 491 | data = r.json() |
487 | 492 | results = data['results']['bindings'] |
488 | 493 | # NOTE: There may be more than one reference per statement. |
|
0 commit comments